diff options
author | Gilles Roudiere <gilles.roudiere@gmail.com> | 2017-08-31 00:03:03 +0200 |
---|---|---|
committer | Gilles Roudiere <gilles.roudiere@gmail.com> | 2017-09-17 23:19:05 +0200 |
commit | fc52a74ffcfdf97acd83df159124fdaab4e2cc7c (patch) | |
tree | 4cc08e1f927b13d6f866471460a49478cebcb548 | |
parent | 975f7eeec364a669c5622996b9ff5517ffeb3721 (diff) |
Fusion the lock/unlock and the group/ungroup buttons
-rw-r--r-- | editor/plugins/canvas_item_editor_plugin.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index 57bb30c9ec..08eb483c5c 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -2504,6 +2504,36 @@ void CanvasItemEditor::_draw_viewport_base() { } void CanvasItemEditor::_draw_viewport() { + + // hide/show buttons depending on the selection + bool all_locked = true; + bool all_group = true; + List<Node *> &selection = editor_selection->get_selected_node_list(); + if (selection.empty()) { + all_locked = false; + all_group = false; + } else { + for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { + if (Object::cast_to<Control>(E->get()) && !Object::cast_to<Control>(E->get())->has_meta("_edit_lock_")) { + all_locked = false; + break; + } + } + for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { + if (Object::cast_to<Control>(E->get()) && !Object::cast_to<Control>(E->get())->has_meta("_edit_group_")) { + all_group = false; + break; + } + } + } + + lock_button->set_visible(!all_locked); + lock_button->set_disabled(selection.empty()); + unlock_button->set_visible(all_locked); + group_button->set_visible(!all_group); + group_button->set_disabled(selection.empty()); + ungroup_button->set_visible(all_group); + _update_scrollbars(); _draw_grid(); @@ -2709,6 +2739,7 @@ void CanvasItemEditor::edit(CanvasItem *p_canvas_item) { drag = DRAG_NONE; + // Clear the selection editor_selection->clear(); //_clear_canvas_items(); editor_selection->add_node(p_canvas_item); //_add_canvas_item(p_canvas_item); |