ComboBox: Don’t popdown if releasing on scrollbar
authorDaniel Boles <dboles@src.gnome.org>
Mon, 4 Sep 2017 22:41:53 +0000 (23:41 +0100)
committerDaniel Boles <dboles@src.gnome.org>
Mon, 4 Sep 2017 22:59:56 +0000 (23:59 +0100)
On button release, we were popping down if the event widget was anything
but priv->button. This broke scrolling by clicking a mouse button, i.e.
when releasing a click in the trough or finishing a drag of either bar.
That’s unexpected, inconvenient, and pointless. So, let’s stop doing it.

https://bugzilla.gnome.org/show_bug.cgi?id=738893

gtk/gtkcombobox.c

index 9acb1fbd5f7107900c73861614f37d64df2da510..1755a1ed32abc3b029880c7d6e6d4f31b53131b4 100644 (file)
@@ -3160,16 +3160,21 @@ gtk_combo_box_list_button_released (GtkWidget      *widget,
 
   if (ewidget != priv->tree_view)
     {
+      GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (priv->scrolled_window);
+
       if (ewidget == priv->button &&
           !popup_in_progress &&
           gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->button)))
         {
           gtk_combo_box_popdown (combo_box);
+
           return TRUE;
         }
 
-      /* released outside treeview */
-      if (ewidget != priv->button)
+      /* If released outside treeview, pop down, unless finishing a scroll */
+      if (ewidget != priv->button &&
+          ewidget != gtk_scrolled_window_get_hscrollbar (scrolled_window) &&
+          ewidget != gtk_scrolled_window_get_vscrollbar (scrolled_window))
         {
           gtk_combo_box_popdown (combo_box);