Updating branch refs/heads/0.6.x to f6da1dc354d06d901c97b82f56a27e3171c5fc18 (commit) from b55aaf8bcf20cd68c0349023b40cd972794580d4 (commit)
commit f6da1dc354d06d901c97b82f56a27e3171c5fc18 Author: Andre Ellguth <an...@ellguth.com> Date: Wed Oct 2 18:31:46 2013 +0200 Some changes for rc startup and dockapp placement. panel-plugin/catchwindow.c | 12 +----------- panel-plugin/dockapp.c | 22 +++++++++++++++++----- panel-plugin/dockapp.h | 1 + panel-plugin/rcfile.c | 19 ++++++++++++------- 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/panel-plugin/catchwindow.c b/panel-plugin/catchwindow.c index a9e48ac..28559b2 100644 --- a/panel-plugin/catchwindow.c +++ b/panel-plugin/catchwindow.c @@ -105,7 +105,6 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) XWMHints *h = NULL; XWindowAttributes attr; DockappNode *dapp = NULL; - GList *_dapps = NULL; gchar *cmd = NULL; gboolean rcDapp = FALSE; @@ -231,16 +230,7 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) g_list_foreach(wmdock->dapps, (GFunc) wmdock_dockapp_tofront, NULL); if( IS_PANELOFF(wmdock) ) { - if(rcDapp == TRUE) { - if(!wmdock_get_parent_dockapp(dapp)) { - _dapps = g_list_find(wmdock->dapps, (gconstpointer) dapp); - - wmdock_set_autoposition_dockapp( dapp , - (DOCKAPP(g_list_first(wmdock->dapps)->data) != dapp && _dapps) ? DOCKAPP(((GList *) g_list_previous(_dapps))->data) : NULL); - } - - wmdock_order_dockapps(wmdock_get_primary_anchor_dockapp()); - } + wmdock_order_dockapps(wmdock_get_primary_anchor_dockapp()); /* Setup the event handler for the window. */ g_signal_connect(G_OBJECT(dapp->tile), "event-after", G_CALLBACK(wmdock_dockapp_event_after_handler), dapp); diff --git a/panel-plugin/dockapp.c b/panel-plugin/dockapp.c index 754e24e..61a8872 100644 --- a/panel-plugin/dockapp.c +++ b/panel-plugin/dockapp.c @@ -666,7 +666,8 @@ void wmdock_update_tile_background(DockappNode *dapp) * @param dapp Child dockapp. * @return DockAppNode Parent dockapp or null. */ -DockappNode *wmdock_get_parent_dockapp(DockappNode *dapp) { +DockappNode *wmdock_get_parent_dockapp(DockappNode *dapp) +{ gint i; GList *dapps; DockappNode *_dapp; @@ -689,6 +690,20 @@ DockappNode *wmdock_get_parent_dockapp(DockappNode *dapp) { /** + * Get the default glue position of the dockapps. + * + * @return Default glue postion. + */ +gint wmdock_get_default_gluepos() +{ + if(wmdock->anchorPos == ANCHOR_TL || wmdock->anchorPos == ANCHOR_TR) + return (GLUE_B); + else + return (GLUE_T); +} + + +/** * This set the tile background image to the DockApp. * * @param dapp The DockApp to set. @@ -833,10 +848,7 @@ void wmdock_set_autoposition_dockapp(DockappNode *dapp, DockappNode *prevDapp) /* Align a new dockapp. */ if(prevDapp) { /* If a parent dockapp already exists. */ - if(wmdock->anchorPos == ANCHOR_TL || wmdock->anchorPos == ANCHOR_TR) - gluepos = GLUE_B; - else - gluepos = GLUE_T; + gluepos = wmdock_get_default_gluepos(); wmdock_dockapp_child_pos(prevDapp, gluepos, &x, &y); prevDapp->glue[gluepos] = dapp; diff --git a/panel-plugin/dockapp.h b/panel-plugin/dockapp.h index ffae656..5ed850e 100644 --- a/panel-plugin/dockapp.h +++ b/panel-plugin/dockapp.h @@ -74,5 +74,6 @@ void wmdock_dockapp_motion_notify_handler(GtkWidget *, GdkEventMotion *, Dockapp void wmdock_remove_anchor_dockapp(DockappNode *, DockappNode *); void wmdock_order_dockapps(DockappNode *); GtkWidget *wmdock_create_tile_dummy(); +gint wmdock_get_default_gluepos(); #endif /* __DOCKAPP_H__ */ diff --git a/panel-plugin/rcfile.c b/panel-plugin/rcfile.c index 99caf87..71008fe 100644 --- a/panel-plugin/rcfile.c +++ b/panel-plugin/rcfile.c @@ -74,9 +74,9 @@ void wmdock_read_rc_file (XfcePanelPlugin *plugin) g_usleep(5 * G_USEC_PER_SEC); for (i = 0; i <= rcCmdcnt; i++) { - debug("rcfile.c: config will start: %s\n", rcCmds[i]); - if(!rcCmds[i]) continue; + debug("rcfile.c: Setup `%s'\n", rcCmds[i]); + if(wmdock_startup_dockapp(rcCmds[i]) != TRUE) { gtkDlg = gtk_message_dialog_new(GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (plugin))), GTK_DIALOG_DESTROY_WITH_PARENT, @@ -90,7 +90,6 @@ void wmdock_read_rc_file (XfcePanelPlugin *plugin) /* Create some dummy widget entries to locate the right position on * window swallow up. */ - dapp = g_new0(DockappNode, 1); dapp->name = NULL; dapp->cmd = rcCmds[i]; @@ -98,12 +97,18 @@ void wmdock_read_rc_file (XfcePanelPlugin *plugin) dapp->s = GTK_SOCKET(gtk_socket_new()); dapp->tile = wmdock_create_tile_from_socket(dapp); + wmdock->dapps = g_list_append(wmdock->dapps, dapp); + if( ! IS_PANELOFF(wmdock) ) { - gtk_box_pack_start(GTK_BOX(wmdock->box), GTK_WIDGET(dapp->tile), - FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(wmdock->box), GTK_WIDGET(dapp->tile), FALSE, FALSE, 0); + } else { + /* If is possible, restore the old position of the dockapps in panel off mode. */ + if(! wmdock_get_parent_dockapp(dapp) ) { + if(g_list_previous(g_list_last(wmdock->dapps))) { + DOCKAPP(((GList *) g_list_previous(g_list_last(wmdock->dapps)))->data)->glue[wmdock_get_default_gluepos()] = dapp; + } + } } - - wmdock->dapps=g_list_append(wmdock->dapps, dapp); } } } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits