[gimp] Enable clicking on tree expanders



commit c4b977916112ca6aef8aa1c45046e0c5b8abfc48
Author: Michael Natterer <mitch gimp org>
Date:   Wed Aug 26 20:25:30 2009 +0200

    Enable clicking on tree expanders
    
    If we didn't click on any cell, but on empty space in the expander
    column of a row that has children, let GtkTreeView process the button
    press to maybe handle a click on an expander.

 app/widgets/gimpcontainertreeview.c |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)
---
diff --git a/app/widgets/gimpcontainertreeview.c b/app/widgets/gimpcontainertreeview.c
index 7df967d..18b7b5a 100644
--- a/app/widgets/gimpcontainertreeview.c
+++ b/app/widgets/gimpcontainertreeview.c
@@ -1011,6 +1011,35 @@ gimp_container_tree_view_button_press (GtkWidget             *widget,
                                                &iter,
                                                FALSE, FALSE);
 
+      if (bevent->button == 1                                     &&
+          bevent->type == GDK_BUTTON_PRESS                        &&
+          gtk_tree_model_iter_has_child (tree_view->model, &iter) &&
+          column == gtk_tree_view_get_expander_column (tree_view->view))
+        {
+          GList *cells;
+
+          cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
+
+          if (! gimp_container_tree_view_find_click_cell (widget,
+                                                          cells,
+                                                          column, &column_area,
+                                                          bevent->x, bevent->y))
+            {
+              /*  we didn't click on any cell, but we clicked on empty
+               *  space in the expander column of a row that has
+               *  children; let GtkTreeView process the button press
+               *  to maybe handle a click on an expander.
+               */
+              g_list_free (cells);
+              gtk_tree_path_free (path);
+              g_object_unref (renderer);
+
+              return FALSE;
+            }
+
+          g_list_free (cells);
+        }
+
       toggled_cell = (GimpCellRendererToggle *)
         gimp_container_tree_view_find_click_cell (widget,
                                                   tree_view->priv->toggle_cells,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]