changeset 2287:680212c356e3

GTK4: Refactor tree and fix DW_SIGNAL_ITEM_CONTEXT signals on tree view widgets.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 04 Feb 2021 03:42:19 +0000
parents 2d282d8fe911
children d0bb8f99ac45
files gtk4/dw.c
diffstat 1 files changed, 11 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/gtk4/dw.c	Wed Feb 03 22:39:16 2021 +0000
+++ b/gtk4/dw.c	Thu Feb 04 03:42:19 2021 +0000
@@ -667,7 +667,6 @@
                }
             }
          }
-
          retval = contextfunc(work.window, text, (int)x, (int)y, work.data, itemdata);
          if(text)
             g_free(text);
@@ -2529,7 +2528,7 @@
 #define _DW_TREE_TREE      2
 #define _DW_TREE_LISTBOX   3
 
-GtkWidget *_tree_create(unsigned long id)
+GtkWidget *_dw_tree_create(unsigned long id)
 {
    GtkWidget *tmp;
 
@@ -2542,7 +2541,7 @@
    return tmp;
 }
 
-GtkWidget *_tree_setup(GtkWidget *tmp, GtkTreeModel *store)
+GtkWidget *_dw_tree_view_setup(GtkWidget *tmp, GtkTreeModel *store)
 {
    GtkWidget *tree = gtk_tree_view_new_with_model(store);
    gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree), FALSE);
@@ -2561,7 +2560,7 @@
 {
    GtkWidget *tmp;
 
-   if(!(tmp = _tree_create(id)))
+   if(!(tmp = _dw_tree_create(id)))
       return 0;
    g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER));
    g_object_set_data(G_OBJECT(tmp), "_dw_multi_sel", GINT_TO_POINTER(multi));
@@ -2582,10 +2581,10 @@
    GtkCellRenderer *rend;
    GtkTreeSelection *sel;
 
-   if(!(tmp = _tree_create(id)))
+   if(!(tmp = _dw_tree_create(id)))
       return 0;
    store = gtk_tree_store_new(4, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_POINTER, G_TYPE_POINTER);
-   tree = _tree_setup(tmp, GTK_TREE_MODEL(store));
+   tree = _dw_tree_view_setup(tmp, GTK_TREE_MODEL(store));
    g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE));
    g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE));
    col = gtk_tree_view_column_new();
@@ -2994,10 +2993,10 @@
    GtkCellRenderer *rend;
    GtkTreeSelection *sel;
 
-   if(!(tmp = _tree_create(id)))
+   if(!(tmp = _dw_tree_create(id)))
       return 0;
    store = gtk_list_store_new(1, G_TYPE_STRING);
-   tree = _tree_setup(tmp, GTK_TREE_MODEL(store));
+   tree = _dw_tree_view_setup(tmp, GTK_TREE_MODEL(store));
    g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX));
    g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX));
 
@@ -4241,7 +4240,7 @@
    }
    /* Create the store and then the tree */
    store = gtk_list_store_newv(count + _DW_CONTAINER_STORE_EXTRA + 1, array);
-   tree = _tree_setup(handle, GTK_TREE_MODEL(store));
+   tree = _dw_tree_view_setup(handle, GTK_TREE_MODEL(store));
    g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER));
    /* Second loop... create the columns */
    for(z=0;z<count;z++)
@@ -9609,6 +9608,9 @@
       else
       {
          GtkGesture *gesture = gtk_gesture_click_new();
+         /* Set button to return to 3 for context secondary clicks */
+         if(strcmp(signal->name, DW_SIGNAL_ITEM_CONTEXT) == 0)
+            gtk_gesture_single_set_button(GTK_GESTURE_SINGLE(gesture), 3);
          gtk_widget_add_controller(GTK_WIDGET(object), GTK_EVENT_CONTROLLER(gesture));
          return G_OBJECT(gesture);
       }