FIX:continuous click can add new plate

jira: STUDIO-7609
Change-Id: I0888c62777c0675be2639e493edbf43d2af90999
This commit is contained in:
zhou.xu 2024-07-16 11:48:35 +08:00 committed by Lane.Wei
parent 47139ad690
commit 5a4c51a31f
3 changed files with 9 additions and 3 deletions

View File

@ -6388,7 +6388,7 @@ bool GLCanvas3D::_init_main_toolbar()
item.icon_filename = m_is_dark ? "toolbar_add_plate_dark.svg" : "toolbar_add_plate.svg";
item.tooltip = _utf8(L("Add plate"));
item.sprite_id++;
item.left.toggable = true;
item.continuous_click = true;
item.left.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_ADD_PLATE)); };
item.enabling_callback = []()->bool {return wxGetApp().plater()->can_add_plate(); };
if (!m_main_toolbar.add_item(item))

View File

@ -842,8 +842,11 @@ void GLToolbar::do_action(GLToolbarItem::EActionType type, int item_id, GLCanvas
case GLToolbarItem::Left: { item->do_left_action(); break; }
case GLToolbarItem::Right: { item->do_right_action(); break; }
}
if ((m_type == Normal) && (item->get_state() != GLToolbarItem::Disabled))
if (item->get_continuous_click_flag()) {
item->set_state(GLToolbarItem::Hover);
parent.render();
}
else if ((m_type == Normal) && (item->get_state() != GLToolbarItem::Disabled) && !item->get_continuous_click_flag())
{
// the item may get disabled during the action, if not, set it back to normal state
item->set_state(GLToolbarItem::Normal);

View File

@ -138,6 +138,7 @@ public:
// mouse right click
Option right;
bool visible;
bool continuous_click{false};
VisibilityCallback visibility_callback;
EnablingCallback enabling_callback;
@ -155,6 +156,7 @@ public:
left = data.left;
right = data.right;
visible = data.visible;
continuous_click = data.continuous_click;
visibility_callback = data.visibility_callback;
enabling_callback = data.enabling_callback;
image_data = data.image_data;
@ -224,6 +226,7 @@ public:
bool update_enabled_state();
//BBS: GUI refactor: GLToolbar
bool get_continuous_click_flag() const { return m_data.continuous_click; }
bool is_action() const { return m_type == Action; }
bool is_action_with_text() const { return m_type == ActionWithText; }
bool is_action_with_text_image() const { return m_type == ActionWithTextImage; }