Updating branch refs/heads/0.6.x to d66211cd85bef1987b619e78838a3148c3b794ec (commit) from 75271cfaf36dd3b8b6d9a92019b1129d581b47d7 (commit)
commit d66211cd85bef1987b619e78838a3148c3b794ec Author: Andre Ellguth <an...@ellguth.com> Date: Wed Aug 15 21:19:17 2012 +0200 Raise all dockapps in panel off if the panel icon is clicked. Fixed problem on startup. panel-plugin/catchwindow.c | 4 +--- panel-plugin/dockapp.c | 6 +++++- panel-plugin/dockapp.h | 1 + panel-plugin/misc.c | 26 ++++++++++++++++++++++++-- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/panel-plugin/catchwindow.c b/panel-plugin/catchwindow.c index b9c6628..1266b66 100644 --- a/panel-plugin/catchwindow.c +++ b/panel-plugin/catchwindow.c @@ -238,9 +238,7 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) (DOCKAPP(g_list_first(wmdock->dapps)->data) != dapp && _dapps) ? DOCKAPP(g_list_previous(_dapps)->data) : NULL); - /* Workaround to display the tile background. */ - if(wmdock->propDispTile == TRUE) - wmdock_redraw_dockapp(dapp); + wmdock_order_dockapps(DOCKAPP(g_list_first(wmdock->dapps)->data)); } /* Setup the event handler for the window. */ diff --git a/panel-plugin/dockapp.c b/panel-plugin/dockapp.c index acefe6a..f81560d 100644 --- a/panel-plugin/dockapp.c +++ b/panel-plugin/dockapp.c @@ -123,7 +123,7 @@ static void wmdock_insert_dummy(DockappNode *dapp) if(!dummy) { dummy = g_new0(DockappNode, 1); - dummy->name = g_strdup("dummy"); + dummy->name = g_strdup(DOCKAPP_DUMMY_TITLE); dummy->tile = wmdock_create_dummy(); } @@ -145,6 +145,10 @@ static void wmdock_destroy_dummy() if(!dummy) return; + /* Kick all dummy dockapps in list. */ + if(g_list_find(wmdock->dapps, dummy)) + wmdock->dapps = g_list_remove(wmdock->dapps, dummy); + gtk_widget_destroy(dummy->tile); g_free(dummy->name); g_free(dummy); diff --git a/panel-plugin/dockapp.h b/panel-plugin/dockapp.h index 73a75b5..a793e09 100644 --- a/panel-plugin/dockapp.h +++ b/panel-plugin/dockapp.h @@ -49,6 +49,7 @@ struct _dockapp { DockappNode *glue[GLUE_MAX]; }; +#define DOCKAPP_DUMMY_TITLE "_dummy_" #define DOCKAPP(__dapp) ((DockappNode *) __dapp) gboolean wmdock_startup_dockapp(const gchar *); diff --git a/panel-plugin/misc.c b/panel-plugin/misc.c index cf42b34..de23b88 100644 --- a/panel-plugin/misc.c +++ b/panel-plugin/misc.c @@ -34,6 +34,7 @@ #include "extern.h" #include "wmdock.h" +#include "dockapp.h" #include "misc.h" #include "xfce4-wmdock-plugin.xpm" @@ -159,8 +160,22 @@ gboolean has_dockapp_hint(WnckWindow *w) } +/** + * Function which interacts with the wmdock icon. + * + * @param icon The wmdock icon widget. + */ +static void wmdock_icon_pressed(GtkWidget *icon) +{ + if( IS_PANELOFF(wmdock) ) + g_list_foreach(wmdock->dapps, (GFunc) wmdock_dockapp_tofront, NULL); +} + + void wmdock_panel_draw_wmdock_icon (gboolean redraw) { + static GtkWidget *eventBox = NULL; + gdkPbIcon = get_icon_from_xpm_scaled((const char **) xfce4_wmdock_plugin_xpm, xfce_panel_plugin_get_size (wmdock->plugin) - 2, xfce_panel_plugin_get_size (wmdock->plugin) - 2); @@ -168,12 +183,19 @@ void wmdock_panel_draw_wmdock_icon (gboolean redraw) gtk_image_set_from_pixbuf (GTK_IMAGE(wmdockIcon), gdkPbIcon); } else { if(wmdockIcon) gtk_widget_destroy(wmdockIcon); + if(eventBox) gtk_widget_destroy(eventBox); + eventBox = gtk_event_box_new(); + wmdockIcon = gtk_image_new_from_pixbuf (gdkPbIcon); + gtk_container_add(GTK_CONTAINER(eventBox), wmdockIcon); - gtk_box_pack_start(GTK_BOX(wmdock->box), GTK_WIDGET(wmdockIcon), + gtk_box_pack_start(GTK_BOX(wmdock->box), GTK_WIDGET(eventBox), FALSE, FALSE, 0); } g_object_unref (G_OBJECT (gdkPbIcon)); - gtk_widget_show(GTK_WIDGET(wmdockIcon)); + if( IS_PANELOFF(wmdock) ) + g_signal_connect (G_OBJECT(eventBox), "button_press_event", G_CALLBACK (wmdock_icon_pressed), NULL); + + gtk_widget_show_all(GTK_WIDGET(eventBox)); } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits