mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 04:17:35 +00:00
LibGUI/TabWidget: Make sure we don't act on two mouseup events
Make sure that even if we get two mouseup events, we do not try to remove the same widget twice.
This commit is contained in:
parent
12f3aa9faa
commit
54852832b1
1 changed files with 11 additions and 12 deletions
|
@ -358,20 +358,19 @@ void TabWidget::mouseup_event(MouseEvent& event)
|
|||
if (event.button() != MouseButton::Left)
|
||||
return;
|
||||
|
||||
if (!m_close_button_enabled)
|
||||
if (!m_close_button_enabled || m_pressed_close_button_index == -1)
|
||||
return;
|
||||
|
||||
for (size_t i = 0; i < m_tabs.size(); ++i) {
|
||||
auto close_button_rect = this->close_button_rect(i);
|
||||
if (close_button_rect.contains(event.position())) {
|
||||
auto* widget = m_tabs[i].widget;
|
||||
deferred_invoke([this, widget](auto&) {
|
||||
if (on_tab_close_click && widget)
|
||||
on_tab_close_click(*widget);
|
||||
});
|
||||
m_pressed_close_button_index = -1;
|
||||
return;
|
||||
}
|
||||
auto close_button_rect = this->close_button_rect(m_pressed_close_button_index);
|
||||
|
||||
if (close_button_rect.contains(event.position())) {
|
||||
auto* widget = m_tabs[m_pressed_close_button_index].widget;
|
||||
deferred_invoke([this, widget](auto&) {
|
||||
if (on_tab_close_click && widget)
|
||||
on_tab_close_click(*widget);
|
||||
});
|
||||
m_pressed_close_button_index = -1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue