# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1612142921 0 # Node ID 819f2492c85febfce40d82c226197936bb994e55 # Parent a26cfd4bbffef5462eb41c99991c8b955e079368 GTK4: More signal cleanup, fix various issues with windows and dialogs. diff -r a26cfd4bbffe -r 819f2492c85f dw.h --- a/dw.h Sun Jan 31 12:42:25 2021 +0000 +++ b/dw.h Mon Feb 01 01:28:41 2021 +0000 @@ -1392,6 +1392,9 @@ int done; int method; void *data, *result; +#if GTK_MAJOR_VERSION > 3 + GMainLoop *mainloop; +#endif } DWDialog; typedef void *HPRINT; diff -r a26cfd4bbffe -r 819f2492c85f gtk4/dw.c --- a/gtk4/dw.c Sun Jan 31 12:42:25 2021 +0000 +++ b/gtk4/dw.c Mon Feb 01 01:28:41 2021 +0000 @@ -115,26 +115,26 @@ #define _DW_TREE_TYPE_COMBOBOX 4 /* Signal forwarder prototypes */ -static gint _button_press_event(GtkGestureClick *gesture, int n_press, double x, double y, gpointer data); -static gint _button_release_event(GtkGestureClick *gesture, int n_press, double x, double y, gpointer data); -static gint _motion_notify_event(GtkEventControllerMotion *controller, double x, double y, gpointer data); -static gboolean _delete_event(GtkWidget *window, gpointer data); -static gint _key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data); -static gint _generic_event(GtkWidget *widget, gpointer data); -static gint _configure_event(GtkWidget *widget, int width, int height, gpointer data); -static gint _container_enter_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data); -static gint _combobox_select_event(GtkWidget *widget, gpointer data); -static gint _expose_event(GtkWidget *widget, cairo_t *cr, int width, int height, gpointer data); -static gint _set_focus_event(GtkWindow *window, GtkWidget *widget, gpointer data); -static gint _tree_context_event(GtkWidget *widget, GdkEvent *event, gpointer data); -static gint _value_changed_event(GtkWidget *widget, gpointer user_data); -static gint _tree_select_event(GtkTreeSelection *sel, gpointer data); -static gint _tree_expand_event(GtkTreeView *treeview, GtkTreeIter *arg1, GtkTreePath *arg2, gpointer data); -static gint _switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data); -static gint _column_click_event(GtkWidget *widget, gpointer data); -static void _html_result_event(GObject *object, GAsyncResult *result, gpointer script_data); +static gint _dw_button_press_event(GtkGestureClick *gesture, int n_press, double x, double y, gpointer data); +static gint _dw_button_release_event(GtkGestureClick *gesture, int n_press, double x, double y, gpointer data); +static gint _dw_motion_notify_event(GtkEventControllerMotion *controller, double x, double y, gpointer data); +static gboolean _dw_delete_event(GtkWidget *window, gpointer data); +static gint _dw_key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data); +static gint _dw_generic_event(GtkWidget *widget, gpointer data); +static gint _dw_configure_event(GtkWidget *widget, int width, int height, gpointer data); +static gint _dw_container_enter_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data); +static gint _dw_combobox_select_event(GtkWidget *widget, gpointer data); +static gint _dw_expose_event(GtkWidget *widget, cairo_t *cr, int width, int height, gpointer data); +static gint _dw_set_focus_event(GtkWindow *window, GtkWidget *widget, gpointer data); +static gint _dw_tree_context_event(GtkWidget *widget, GdkEvent *event, gpointer data); +static gint _dw_value_changed_event(GtkWidget *widget, gpointer user_data); +static gint _dw_tree_select_event(GtkTreeSelection *sel, gpointer data); +static gint _dw_tree_expand_event(GtkTreeView *treeview, GtkTreeIter *arg1, GtkTreePath *arg2, gpointer data); +static gint _dw_switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data); +static gint _dw_column_click_event(GtkWidget *widget, gpointer data); #ifdef USE_WEBKIT -static void _html_changed_event(WebKitWebView *web_view, WebKitLoadEvent load_event, gpointer data); +static void _dw_html_result_event(GObject *object, GAsyncResult *result, gpointer script_data); +static void _dw_html_changed_event(WebKitWebView *web_view, WebKitLoadEvent load_event, gpointer data); #endif static void _dw_signal_disconnect(gpointer data, GClosure *closure); @@ -163,7 +163,9 @@ GObject *_dw_value_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data); GObject *_dw_tree_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data); GObject *_dw_focus_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data); +#ifdef USE_WEBKIT GObject *_dw_html_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data); +#endif typedef struct { @@ -177,28 +179,28 @@ /* A list of signal forwarders, to account for paramater differences. */ static SignalList SignalTranslate[] = { - { _configure_event, DW_SIGNAL_CONFIGURE, "resize", NULL }, - { _key_press_event, DW_SIGNAL_KEY_PRESS, "key-pressed", _dw_key_setup }, - { _button_press_event, DW_SIGNAL_BUTTON_PRESS, "pressed", _dw_mouse_setup }, - { _button_release_event, DW_SIGNAL_BUTTON_RELEASE, "released", _dw_mouse_setup }, - { _motion_notify_event, DW_SIGNAL_MOTION_NOTIFY, "motion", _dw_motion_setup }, - { _delete_event, DW_SIGNAL_DELETE, "close-request", NULL }, - { _expose_event, DW_SIGNAL_EXPOSE, "draw", _dw_draw_setup }, - { _generic_event, DW_SIGNAL_CLICKED, "clicked", _dw_button_setup }, - { _container_enter_event, DW_SIGNAL_ITEM_ENTER, "key-pressed", _dw_key_setup }, - { _tree_context_event, DW_SIGNAL_ITEM_CONTEXT, "pressed", _dw_tree_setup }, - { _combobox_select_event, DW_SIGNAL_LIST_SELECT, "changed", NULL }, - { _tree_select_event, DW_SIGNAL_ITEM_SELECT, "row-activated", NULL }, - { _set_focus_event, DW_SIGNAL_SET_FOCUS, "activate-focus", _dw_focus_setup }, - { _value_changed_event, DW_SIGNAL_VALUE_CHANGED, "value-changed", _dw_value_setup }, - { _switch_page_event, DW_SIGNAL_SWITCH_PAGE, "switch-page", NULL }, - { _column_click_event, DW_SIGNAL_COLUMN_CLICK, "activate", _dw_tree_setup }, - { _tree_expand_event, DW_SIGNAL_TREE_EXPAND, "row-expanded", NULL }, + { _dw_configure_event, DW_SIGNAL_CONFIGURE, "resize", NULL }, + { _dw_key_press_event, DW_SIGNAL_KEY_PRESS, "key-pressed", _dw_key_setup }, + { _dw_button_press_event, DW_SIGNAL_BUTTON_PRESS, "pressed", _dw_mouse_setup }, + { _dw_button_release_event, DW_SIGNAL_BUTTON_RELEASE, "released", _dw_mouse_setup }, + { _dw_motion_notify_event, DW_SIGNAL_MOTION_NOTIFY, "motion", _dw_motion_setup }, + { _dw_delete_event, DW_SIGNAL_DELETE, "close-request", NULL }, + { _dw_expose_event, DW_SIGNAL_EXPOSE, "draw", _dw_draw_setup }, + { _dw_generic_event, DW_SIGNAL_CLICKED, "clicked", _dw_button_setup }, + { _dw_container_enter_event, DW_SIGNAL_ITEM_ENTER, "key-pressed", _dw_key_setup }, + { _dw_tree_context_event, DW_SIGNAL_ITEM_CONTEXT, "pressed", _dw_tree_setup }, + { _dw_combobox_select_event, DW_SIGNAL_LIST_SELECT, "changed", NULL }, + { _dw_tree_select_event, DW_SIGNAL_ITEM_SELECT, "changed", _dw_tree_setup }, + { _dw_set_focus_event, DW_SIGNAL_SET_FOCUS, "activate-focus", _dw_focus_setup }, + { _dw_value_changed_event, DW_SIGNAL_VALUE_CHANGED, "value-changed", _dw_value_setup }, + { _dw_switch_page_event, DW_SIGNAL_SWITCH_PAGE, "switch-page", NULL }, + { _dw_column_click_event, DW_SIGNAL_COLUMN_CLICK, "activate", _dw_tree_setup }, + { _dw_tree_expand_event, DW_SIGNAL_TREE_EXPAND, "row-expanded", NULL }, #ifdef USE_WEBKIT - { _html_changed_event, DW_SIGNAL_HTML_CHANGED, "load-changed", NULL }, + { _dw_html_changed_event, DW_SIGNAL_HTML_CHANGED, "load-changed", NULL }, + { _dw_html_result_event, DW_SIGNAL_HTML_RESULT, "", _dw_html_setup }, #endif - { _html_result_event, DW_SIGNAL_HTML_RESULT, "", _dw_html_setup }, - { NULL, "", "", NULL } + { NULL, "", "", NULL } }; /* Alignment flags */ @@ -317,9 +319,9 @@ g_object_set_data(object, text, GINT_TO_POINTER(cid)); } +#ifdef USE_WEBKIT static void _html_result_event(GObject *object, GAsyncResult *result, gpointer script_data) { -#ifdef USE_WEBKIT pthread_t saved_thread = _dw_thread; WebKitJavascriptResult *js_result; JSCValue *value; @@ -371,10 +373,8 @@ htmlresultfunc((HWND)object, DW_ERROR_UNKNOWN, NULL, script_data, user_data); webkit_javascript_result_unref (js_result); _dw_thread = saved_thread; -#endif -} - -#ifdef USE_WEBKIT +} + static void _html_changed_event(WebKitWebView *web_view, WebKitLoadEvent load_event, gpointer data) { SignalHandler work = _get_signal_handler(data); @@ -404,7 +404,7 @@ } #endif -static gint _set_focus_event(GtkWindow *window, GtkWidget *widget, gpointer data) +static gint _dw_set_focus_event(GtkWindow *window, GtkWidget *widget, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -418,7 +418,7 @@ return retval; } -static gint _button_press_event(GtkGestureClick *gesture, int n_press, double x, double y, gpointer data) +static gint _dw_button_press_event(GtkGestureClick *gesture, int n_press, double x, double y, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -441,7 +441,7 @@ return retval; } -static gint _button_release_event(GtkGestureClick *gesture, int n_press, double x, double y, gpointer data) +static gint _dw_button_release_event(GtkGestureClick *gesture, int n_press, double x, double y, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -464,7 +464,7 @@ return retval; } -static gint _motion_notify_event(GtkEventControllerMotion *controller, double x, double y, gpointer data) +static gint _dw_motion_notify_event(GtkEventControllerMotion *controller, double x, double y, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -488,7 +488,7 @@ return retval; } -static gboolean _delete_event(GtkWidget *window, gpointer data) +static gboolean _dw_delete_event(GtkWidget *window, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -502,7 +502,7 @@ return retval; } -static gint _key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data) +static gint _dw_key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -521,7 +521,7 @@ return retval; } -static gint _generic_event(GtkWidget *widget, gpointer data) +static gint _dw_generic_event(GtkWidget *widget, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -535,7 +535,7 @@ return retval; } -static gint _configure_event(GtkWidget *widget, int width, int height, gpointer data) +static gint _dw_configure_event(GtkWidget *widget, int width, int height, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -549,7 +549,7 @@ return retval; } -static gint _expose_event(GtkWidget *widget, cairo_t *cr, int width, int height, gpointer data) +static gint _dw_expose_event(GtkWidget *widget, cairo_t *cr, int width, int height, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -567,7 +567,7 @@ return retval; } -static gint _combobox_select_event(GtkWidget *widget, gpointer data) +static gint _dw_combobox_select_event(GtkWidget *widget, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -613,7 +613,7 @@ #define _DW_DATA_TYPE_STRING 0 #define _DW_DATA_TYPE_POINTER 1 -static gint _tree_context_event(GtkWidget *widget, GdkEvent *event, gpointer data) +static gint _dw_tree_context_event(GtkWidget *widget, GdkEvent *event, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -681,7 +681,7 @@ return retval; } -static gint _tree_select_event(GtkTreeSelection *sel, gpointer data) +static gint _dw_tree_select_event(GtkTreeSelection *sel, gpointer data) { GtkWidget *item = NULL, *widget = (GtkWidget *)gtk_tree_selection_get_tree_view(sel); int retval = FALSE; @@ -778,7 +778,7 @@ return retval; } -static gint _tree_expand_event(GtkTreeView *widget, GtkTreeIter *iter, GtkTreePath *path, gpointer data) +static gint _dw_tree_expand_event(GtkTreeView *widget, GtkTreeIter *iter, GtkTreePath *path, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -791,7 +791,7 @@ return retval; } -static gint _container_enter_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data) +static gint _dw_container_enter_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -838,7 +838,7 @@ } /* Return the logical page id from the physical page id */ -int _get_logical_page(HWND handle, unsigned long pageid) +int _dw_get_logical_page(HWND handle, unsigned long pageid) { int z; GtkWidget **pagearray = g_object_get_data(G_OBJECT(handle), "_dw_pagearray"); @@ -856,7 +856,7 @@ } -static gint _switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data) +static gint _dw_switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data) { SignalHandler work = _get_signal_handler(data); int retval = FALSE; @@ -864,12 +864,12 @@ if(work.window) { int (*switchpagefunc)(HWND, unsigned long, void *) = work.func; - retval = switchpagefunc(work.window, _get_logical_page(GTK_WIDGET(notebook), page_num), work.data); + retval = switchpagefunc(work.window, _dw_get_logical_page(GTK_WIDGET(notebook), page_num), work.data); } return retval; } -static gint _column_click_event(GtkWidget *widget, gpointer data) +static gint _dw_column_click_event(GtkWidget *widget, gpointer data) { void **params = data; int retval = FALSE; @@ -907,7 +907,7 @@ return newval; } -static gint _value_changed_event(GtkWidget *widget, gpointer data) +static gint _dw_value_changed_event(GtkWidget *widget, gpointer data) { GtkWidget *slider, *spinbutton, *scrollbar; GtkAdjustment *adjustment = (GtkAdjustment *)widget; @@ -926,7 +926,7 @@ if(g_object_get_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event")) return FALSE; - if (slider || spinbutton || scrollbar) + if(slider || spinbutton || scrollbar) { SignalHandler work = _get_signal_handler(data); @@ -943,7 +943,7 @@ return FALSE; } -static gint _default_key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data) +static gint _dw_default_key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data) { GtkWidget *next = (GtkWidget *)data; @@ -975,7 +975,7 @@ return gdk_pixbuf_new_from_resource(resource_path, NULL); } -static GdkPixbuf *_find_pixbuf(HICN icon, unsigned long *userwidth, unsigned long *userheight) +static GdkPixbuf *_dw_find_pixbuf(HICN icon, unsigned long *userwidth, unsigned long *userheight) { unsigned int id = GPOINTER_TO_INT(icon); GdkPixbuf *icon_pixbuf = NULL; @@ -1194,16 +1194,15 @@ */ DWDialog *dw_dialog_new(void *data) { - DWDialog *tmp = malloc(sizeof(DWDialog)); - - if ( tmp ) + DWDialog *tmp = calloc(sizeof(DWDialog), 1); + + if(tmp) { tmp->eve = dw_event_new(); dw_event_reset(tmp->eve); tmp->data = data; - tmp->done = FALSE; - tmp->method = FALSE; - tmp->result = NULL; + tmp->mainloop = g_main_loop_new(NULL, FALSE); + g_main_loop_ref(tmp->mainloop); } return tmp; } @@ -1219,7 +1218,7 @@ { dialog->result = result; if(dialog->method) - g_main_loop_quit(_DWMainLoop); + g_main_loop_quit(dialog->mainloop); else dw_event_post(dialog->eve); dialog->done = TRUE; @@ -1242,7 +1241,7 @@ if(_dw_thread == (pthread_t)-1 || pthread_self() == _dw_thread) { dialog->method = TRUE; - g_main_loop_run(_DWMainLoop); + g_main_loop_run(dialog->mainloop); } else { @@ -1251,6 +1250,7 @@ } dw_event_close(&dialog->eve); + g_main_loop_unref(dialog->mainloop); tmp = dialog->result; free(dialog); return tmp; @@ -1924,7 +1924,7 @@ { if(pointertype > 65535) { - GdkPixbuf *pixbuf = _find_pixbuf(GINT_TO_POINTER(pointertype), NULL, NULL); + GdkPixbuf *pixbuf = _dw_find_pixbuf(GINT_TO_POINTER(pointertype), NULL, NULL); GdkCursor *cursor = gdk_cursor_new_from_texture(gdk_texture_new_for_pixbuf(pixbuf), 0, 0, NULL); if(cursor) gtk_widget_set_cursor(GTK_WIDGET(handle), cursor); @@ -1947,6 +1947,9 @@ /* TODO: See if this is possible in GTK4 */ } +/* Window creation flags that will cause the window to have decorations */ +#define _DW_DECORATION_FLAGS (DW_FCF_CLOSEBUTTON|DW_FCF_SYSMENU|DW_FCF_TITLEBAR|DW_FCF_MINMAX|DW_FCF_SIZEBORDER|DW_FCF_BORDER|DW_FCF_DLGBORDER) + /* * Create a new Window Frame. * Parameters: @@ -1956,47 +1959,36 @@ */ HWND dw_window_new(HWND hwndOwner, const char *title, unsigned long flStyle) { - GtkWidget *tmp; - int flags = 0; - - { - GtkWidget *box = dw_box_new(DW_VERT, 0); - GtkWidget *grid = gtk_grid_new(); - - gtk_widget_show(grid); - - last_window = tmp = gtk_window_new(); - - gtk_window_set_title(GTK_WINDOW(tmp), title); - gtk_window_set_resizable(GTK_WINDOW(tmp), (flStyle & DW_FCF_SIZEBORDER) ? TRUE : FALSE); - - gtk_widget_realize(tmp); - - if(flStyle & DW_FCF_FULLSCREEN) - gtk_window_fullscreen(GTK_WINDOW(tmp)); - else - { - if(flStyle & DW_FCF_MAXIMIZE) - gtk_window_maximize(GTK_WINDOW(tmp)); - - if(flStyle & DW_FCF_MINIMIZE) - gtk_window_minimize(GTK_WINDOW(tmp)); - } - - /* Either the CLOSEBUTTON or SYSMENU flags should make it deletable */ - gtk_window_set_deletable(GTK_WINDOW(tmp), (flStyle & (DW_FCF_CLOSEBUTTON | DW_FCF_SYSMENU)) ? TRUE : FALSE); - - if(!flags) - gtk_window_set_decorated(GTK_WINDOW(tmp), FALSE); - - if(flStyle & DW_FCF_SIZEBORDER) - g_object_set_data(G_OBJECT(tmp), "_dw_size", GINT_TO_POINTER(1)); - - gtk_grid_attach(GTK_GRID(grid), box, 0, 1, 1, 1); - gtk_window_set_child(GTK_WINDOW(tmp), grid); - g_object_set_data(G_OBJECT(tmp), "_dw_boxhandle", (gpointer)box); - g_object_set_data(G_OBJECT(tmp), "_dw_grid", (gpointer)grid); - } + GtkWidget *box = dw_box_new(DW_VERT, 0); + GtkWidget *grid = gtk_grid_new(); + GtkWidget *tmp = gtk_window_new(); + + gtk_widget_show(grid); + + /* Handle the window style flags */ + gtk_window_set_title(GTK_WINDOW(tmp), title); + gtk_window_set_resizable(GTK_WINDOW(tmp), (flStyle & DW_FCF_SIZEBORDER) ? TRUE : FALSE); + /* Either the CLOSEBUTTON or SYSMENU flags should make it deletable */ + gtk_window_set_deletable(GTK_WINDOW(tmp), (flStyle & (DW_FCF_CLOSEBUTTON | DW_FCF_SYSMENU)) ? TRUE : FALSE); + gtk_window_set_decorated(GTK_WINDOW(tmp), (flStyle & _DW_DECORATION_FLAGS) ? TRUE : FALSE); + + gtk_widget_realize(tmp); + + if(flStyle & DW_FCF_FULLSCREEN) + gtk_window_fullscreen(GTK_WINDOW(tmp)); + else + { + if(flStyle & DW_FCF_MAXIMIZE) + gtk_window_maximize(GTK_WINDOW(tmp)); + + if(flStyle & DW_FCF_MINIMIZE) + gtk_window_minimize(GTK_WINDOW(tmp)); + } + + gtk_grid_attach(GTK_GRID(grid), box, 0, 1, 1, 1); + gtk_window_set_child(GTK_WINDOW(tmp), grid); + g_object_set_data(G_OBJECT(tmp), "_dw_boxhandle", (gpointer)box); + g_object_set_data(G_OBJECT(tmp), "_dw_grid", (gpointer)grid); g_object_set_data(G_OBJECT(tmp), "_dw_style", GINT_TO_POINTER(flStyle)); return tmp; } @@ -3017,7 +3009,7 @@ #if GTK3 GdkPixbuf *icon_pixbuf; - icon_pixbuf = _find_pixbuf(icon, NULL, NULL); + icon_pixbuf = _dw_find_pixbuf(icon, NULL, NULL); if(icon_pixbuf) { @@ -3046,7 +3038,7 @@ return; if(id) - tmp = _find_pixbuf((HICN)id, NULL, NULL); + tmp = _dw_find_pixbuf((HICN)id, NULL, NULL); else { char *file = alloca(strlen(filename) + 6); @@ -3134,7 +3126,7 @@ unlink(template); } else if (id) - tmp = _find_pixbuf((HICN)id, NULL, NULL); + tmp = _dw_find_pixbuf((HICN)id, NULL, NULL); if(tmp) { @@ -3857,7 +3849,7 @@ { iter = (GtkTreeIter *)malloc(sizeof(GtkTreeIter)); - pixbuf = _find_pixbuf(icon, NULL, NULL); + pixbuf = _dw_find_pixbuf(icon, NULL, NULL); gtk_tree_store_insert_after(store, iter, (GtkTreeIter *)parent, (GtkTreeIter *)item); gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, 2, itemdata, 3, iter, -1); @@ -3892,7 +3884,7 @@ { iter = (GtkTreeIter *)malloc(sizeof(GtkTreeIter)); - pixbuf = _find_pixbuf(icon, NULL, NULL); + pixbuf = _dw_find_pixbuf(icon, NULL, NULL); gtk_tree_store_append (store, iter, (GtkTreeIter *)parent); gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, 2, itemdata, 3, iter, -1); @@ -3922,7 +3914,7 @@ && GTK_IS_TREE_VIEW(tree) && (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree)))) { - pixbuf = _find_pixbuf(icon, NULL, NULL); + pixbuf = _dw_find_pixbuf(icon, NULL, NULL); gtk_tree_store_set(store, (GtkTreeIter *)item, 0, title, 1, pixbuf, -1); } @@ -4282,7 +4274,7 @@ } g_object_set_data(G_OBJECT(col), "_dw_column", GINT_TO_POINTER(z)); params[2] = tree; - g_signal_connect_data(G_OBJECT(col), "clicked", G_CALLBACK(_column_click_event), (gpointer)params, _dw_signal_disconnect, 0); + g_signal_connect_data(G_OBJECT(col), "clicked", G_CALLBACK(_dw_column_click_event), (gpointer)params, _dw_signal_disconnect, 0); gtk_tree_view_column_set_title(col, titles[z]); if(flags[z] & DW_CFA_RIGHT) { @@ -4562,7 +4554,7 @@ void **thisdata = (void **)data; HICN hicon = data ? *((HICN *)thisdata[0]) : 0; char *tmp = data ? (char *)thisdata[1] : NULL; - GdkPixbuf *pixbuf = hicon ? _find_pixbuf(hicon, NULL, NULL) : NULL; + GdkPixbuf *pixbuf = hicon ? _dw_find_pixbuf(hicon, NULL, NULL) : NULL; gtk_list_store_set(store, &iter, _DW_CONTAINER_STORE_EXTRA, pixbuf, -1); gtk_list_store_set(store, &iter, _DW_CONTAINER_STORE_EXTRA + 1, tmp, -1); @@ -4570,7 +4562,7 @@ else if(flag & DW_CFA_BITMAPORICON) { HICN hicon = data ? *((HICN *)data) : 0; - GdkPixbuf *pixbuf = hicon ? _find_pixbuf(hicon, NULL, NULL) : NULL; + GdkPixbuf *pixbuf = hicon ? _dw_find_pixbuf(hicon, NULL, NULL) : NULL; gtk_list_store_set(store, &iter, column + _DW_CONTAINER_STORE_EXTRA + 1, pixbuf, -1); } @@ -6089,7 +6081,7 @@ if (!(pixmap = calloc(1,sizeof(struct _hpixmap)))) return NULL; - pixmap->pixbuf = gdk_pixbuf_copy(_find_pixbuf((HICN)id, &pixmap->width, &pixmap->height)); + pixmap->pixbuf = gdk_pixbuf_copy(_dw_find_pixbuf((HICN)id, &pixmap->width, &pixmap->height)); return pixmap; } @@ -7841,7 +7833,7 @@ int retval, phys; phys = gtk_notebook_get_current_page(GTK_NOTEBOOK(handle)); - retval = _get_logical_page(handle, phys); + retval = _dw_get_logical_page(handle, phys); return retval; } @@ -8692,7 +8684,7 @@ { GtkEventController *controller = gtk_event_controller_key_new(); gtk_widget_add_controller(GTK_WIDGET(window), controller); - g_signal_connect(G_OBJECT(controller), "key-pressed", G_CALLBACK(_default_key_press_event), next); + g_signal_connect(G_OBJECT(controller), "key-pressed", G_CALLBACK(_dw_default_key_press_event), next); } } @@ -9580,6 +9572,11 @@ g_object_set_data(object, "_dw_column_click_id", GINT_TO_POINTER(sigid+1)); return NULL; } + else if(strcmp(signal->name, DW_SIGNAL_ITEM_SELECT) == 0) + { + GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(object)); + return G_OBJECT(sel); + } else { GtkGesture *gesture = gtk_gesture_click_new();