浏览代码

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.
Marcus Nilsson 4 年之前
父节点
当前提交
54852832b1
共有 1 个文件被更改,包括 11 次插入12 次删除
  1. 11 12
      Userland/Libraries/LibGUI/TabWidget.cpp

+ 11 - 12
Userland/Libraries/LibGUI/TabWidget.cpp

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