Mercurial > dwindows
comparison gtk4/dw.c @ 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 |
comparison
equal
deleted
inserted
replaced
2286:2d282d8fe911 | 2287:680212c356e3 |
---|---|
665 } | 665 } |
666 gtk_tree_path_free(path); | 666 gtk_tree_path_free(path); |
667 } | 667 } |
668 } | 668 } |
669 } | 669 } |
670 | |
671 retval = contextfunc(work.window, text, (int)x, (int)y, work.data, itemdata); | 670 retval = contextfunc(work.window, text, (int)x, (int)y, work.data, itemdata); |
672 if(text) | 671 if(text) |
673 g_free(text); | 672 g_free(text); |
674 } | 673 } |
675 } | 674 } |
2527 | 2526 |
2528 #define _DW_TREE_CONTAINER 1 | 2527 #define _DW_TREE_CONTAINER 1 |
2529 #define _DW_TREE_TREE 2 | 2528 #define _DW_TREE_TREE 2 |
2530 #define _DW_TREE_LISTBOX 3 | 2529 #define _DW_TREE_LISTBOX 3 |
2531 | 2530 |
2532 GtkWidget *_tree_create(unsigned long id) | 2531 GtkWidget *_dw_tree_create(unsigned long id) |
2533 { | 2532 { |
2534 GtkWidget *tmp; | 2533 GtkWidget *tmp; |
2535 | 2534 |
2536 tmp = gtk_scrolled_window_new(); | 2535 tmp = gtk_scrolled_window_new(); |
2537 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (tmp), | 2536 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (tmp), |
2540 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); | 2539 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); |
2541 gtk_widget_show(tmp); | 2540 gtk_widget_show(tmp); |
2542 return tmp; | 2541 return tmp; |
2543 } | 2542 } |
2544 | 2543 |
2545 GtkWidget *_tree_setup(GtkWidget *tmp, GtkTreeModel *store) | 2544 GtkWidget *_dw_tree_view_setup(GtkWidget *tmp, GtkTreeModel *store) |
2546 { | 2545 { |
2547 GtkWidget *tree = gtk_tree_view_new_with_model(store); | 2546 GtkWidget *tree = gtk_tree_view_new_with_model(store); |
2548 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree), FALSE); | 2547 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree), FALSE); |
2549 gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(tmp), tree); | 2548 gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(tmp), tree); |
2550 g_object_set_data(G_OBJECT(tmp), "_dw_user", (gpointer)tree); | 2549 g_object_set_data(G_OBJECT(tmp), "_dw_user", (gpointer)tree); |
2559 */ | 2558 */ |
2560 HWND dw_container_new(unsigned long id, int multi) | 2559 HWND dw_container_new(unsigned long id, int multi) |
2561 { | 2560 { |
2562 GtkWidget *tmp; | 2561 GtkWidget *tmp; |
2563 | 2562 |
2564 if(!(tmp = _tree_create(id))) | 2563 if(!(tmp = _dw_tree_create(id))) |
2565 return 0; | 2564 return 0; |
2566 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER)); | 2565 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER)); |
2567 g_object_set_data(G_OBJECT(tmp), "_dw_multi_sel", GINT_TO_POINTER(multi)); | 2566 g_object_set_data(G_OBJECT(tmp), "_dw_multi_sel", GINT_TO_POINTER(multi)); |
2568 return tmp; | 2567 return tmp; |
2569 } | 2568 } |
2580 GtkTreeStore *store; | 2579 GtkTreeStore *store; |
2581 GtkTreeViewColumn *col; | 2580 GtkTreeViewColumn *col; |
2582 GtkCellRenderer *rend; | 2581 GtkCellRenderer *rend; |
2583 GtkTreeSelection *sel; | 2582 GtkTreeSelection *sel; |
2584 | 2583 |
2585 if(!(tmp = _tree_create(id))) | 2584 if(!(tmp = _dw_tree_create(id))) |
2586 return 0; | 2585 return 0; |
2587 store = gtk_tree_store_new(4, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_POINTER, G_TYPE_POINTER); | 2586 store = gtk_tree_store_new(4, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_POINTER, G_TYPE_POINTER); |
2588 tree = _tree_setup(tmp, GTK_TREE_MODEL(store)); | 2587 tree = _dw_tree_view_setup(tmp, GTK_TREE_MODEL(store)); |
2589 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE)); | 2588 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE)); |
2590 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE)); | 2589 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE)); |
2591 col = gtk_tree_view_column_new(); | 2590 col = gtk_tree_view_column_new(); |
2592 | 2591 |
2593 rend = gtk_cell_renderer_pixbuf_new(); | 2592 rend = gtk_cell_renderer_pixbuf_new(); |
2992 GtkListStore *store; | 2991 GtkListStore *store; |
2993 GtkTreeViewColumn *col; | 2992 GtkTreeViewColumn *col; |
2994 GtkCellRenderer *rend; | 2993 GtkCellRenderer *rend; |
2995 GtkTreeSelection *sel; | 2994 GtkTreeSelection *sel; |
2996 | 2995 |
2997 if(!(tmp = _tree_create(id))) | 2996 if(!(tmp = _dw_tree_create(id))) |
2998 return 0; | 2997 return 0; |
2999 store = gtk_list_store_new(1, G_TYPE_STRING); | 2998 store = gtk_list_store_new(1, G_TYPE_STRING); |
3000 tree = _tree_setup(tmp, GTK_TREE_MODEL(store)); | 2999 tree = _dw_tree_view_setup(tmp, GTK_TREE_MODEL(store)); |
3001 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX)); | 3000 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX)); |
3002 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX)); | 3001 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX)); |
3003 | 3002 |
3004 col = gtk_tree_view_column_new(); | 3003 col = gtk_tree_view_column_new(); |
3005 rend = gtk_cell_renderer_text_new(); | 3004 rend = gtk_cell_renderer_text_new(); |
4239 array[z+_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_STRING; | 4238 array[z+_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_STRING; |
4240 } | 4239 } |
4241 } | 4240 } |
4242 /* Create the store and then the tree */ | 4241 /* Create the store and then the tree */ |
4243 store = gtk_list_store_newv(count + _DW_CONTAINER_STORE_EXTRA + 1, array); | 4242 store = gtk_list_store_newv(count + _DW_CONTAINER_STORE_EXTRA + 1, array); |
4244 tree = _tree_setup(handle, GTK_TREE_MODEL(store)); | 4243 tree = _dw_tree_view_setup(handle, GTK_TREE_MODEL(store)); |
4245 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER)); | 4244 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER)); |
4246 /* Second loop... create the columns */ | 4245 /* Second loop... create the columns */ |
4247 for(z=0;z<count;z++) | 4246 for(z=0;z<count;z++) |
4248 { | 4247 { |
4249 snprintf(numbuf, 24, "_dw_cont_col%d", z); | 4248 snprintf(numbuf, 24, "_dw_cont_col%d", z); |
9607 return G_OBJECT(sel); | 9606 return G_OBJECT(sel); |
9608 } | 9607 } |
9609 else | 9608 else |
9610 { | 9609 { |
9611 GtkGesture *gesture = gtk_gesture_click_new(); | 9610 GtkGesture *gesture = gtk_gesture_click_new(); |
9611 /* Set button to return to 3 for context secondary clicks */ | |
9612 if(strcmp(signal->name, DW_SIGNAL_ITEM_CONTEXT) == 0) | |
9613 gtk_gesture_single_set_button(GTK_GESTURE_SINGLE(gesture), 3); | |
9612 gtk_widget_add_controller(GTK_WIDGET(object), GTK_EVENT_CONTROLLER(gesture)); | 9614 gtk_widget_add_controller(GTK_WIDGET(object), GTK_EVENT_CONTROLLER(gesture)); |
9613 return G_OBJECT(gesture); | 9615 return G_OBJECT(gesture); |
9614 } | 9616 } |
9615 } | 9617 } |
9616 return object; | 9618 return object; |