diff options
Diffstat (limited to 'editor/editor_node.cpp')
-rw-r--r-- | editor/editor_node.cpp | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 3691172c18..6711be3d06 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -5158,27 +5158,11 @@ void EditorNode::_scene_tab_closed(int p_tab) { scene_tabs->update_scene_tabs(); } -class EditorBottomDockButton : public Button { - GDCLASS(EditorBottomDockButton, Button) - - static void _bind_methods() { - ADD_SIGNAL(MethodInfo("dropping")); - } - -public: - virtual bool can_drop_data(const Point2 &p_point, const Variant &p_data) const override { - if (!is_pressed()) { - const_cast<EditorBottomDockButton *>(this)->emit_signal("dropping"); - } - return false; - } -}; - Button *EditorNode::add_bottom_panel_item(String p_text, Control *p_item, bool p_at_front) { - Button *tb = memnew(EditorBottomDockButton); + Button *tb = memnew(Button); tb->set_flat(true); tb->connect("toggled", callable_mp(this, &EditorNode::_bottom_panel_switch_by_control).bind(p_item)); - tb->connect("dropping", callable_mp(this, &EditorNode::_bottom_panel_switch_by_control).bind(true, p_item)); + tb->set_drag_forwarding(Callable(), callable_mp(this, &EditorNode::_bottom_panel_drag_hover).bind(tb, p_item), Callable()); tb->set_text(p_text); tb->set_toggle_mode(true); tb->set_focus_mode(Control::FOCUS_NONE); @@ -6015,6 +5999,13 @@ void EditorNode::_bottom_panel_raise_toggled(bool p_pressed) { top_split->set_visible(!p_pressed); } +bool EditorNode::_bottom_panel_drag_hover(const Vector2 &, const Variant &, Button *p_button, Control *p_control) { + if (!p_button->is_pressed()) { + _bottom_panel_switch_by_control(true, p_control); + } + return false; +} + void EditorNode::_update_renderer_color() { String rendering_method = renderer->get_selected_metadata(); |