1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 21:57:43 +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:
Marcus Nilsson 2021-06-20 21:28:27 +02:00 committed by Andreas Kling
parent 12f3aa9faa
commit 54852832b1

View file

@ -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;
}
}