Updating branch refs/heads/master to b55aaf8bcf20cd68c0349023b40cd972794580d4 (commit) from 2cb7071d1af48b065f8e46e279d6586806b3736e (commit)
commit b55aaf8bcf20cd68c0349023b40cd972794580d4 Author: Andre Ellguth <an...@ellguth.com> Date: Tue Oct 1 18:01:14 2013 +0200 Code cleanup. Some changes for rc startup. panel-plugin/catchwindow.c | 19 ++++---- panel-plugin/dockapp.c | 110 ++++++++++++++++++-------------------------- panel-plugin/dockapp.h | 2 +- panel-plugin/rcfile.c | 23 +++++---- 4 files changed, 68 insertions(+), 86 deletions(-) diff --git a/panel-plugin/catchwindow.c b/panel-plugin/catchwindow.c index f494de4..a9e48ac 100644 --- a/panel-plugin/catchwindow.c +++ b/panel-plugin/catchwindow.c @@ -212,20 +212,18 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) wmdock_set_autoposition_dockapp(dapp, g_list_last(wmdock->dapps) ? g_list_last(wmdock->dapps)->data : NULL); } + + wmdock->dapps=g_list_append(wmdock->dapps, dapp); } else { - /* Change the postion of the DockApp with the newly determined width and height. of the window */ + /* Change the postion of the DockApp with the newly determined width and height of the window. */ wmdock_set_socket_postion(dapp, (DEFAULT_DOCKAPP_WIDTH - wi) / 2, (DEFAULT_DOCKAPP_HEIGHT - he) / 2); } gtk_socket_add_id(dapp->s, dapp->i); - gtk_widget_show_all(GTK_WIDGET(dapp->tile)); g_signal_connect(dapp->s, "plug-removed", G_CALLBACK(wmdock_dapp_closed), dapp); - if(rcDapp == FALSE) - wmdock->dapps=g_list_append(wmdock->dapps, dapp); - /* Setup drag & drop for the dockapps. */ g_list_foreach(wmdock->dapps, (GFunc) wmdock_setupdnd_dockapp, NULL); @@ -234,11 +232,14 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) if( IS_PANELOFF(wmdock) ) { if(rcDapp == TRUE) { - _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); + 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(DOCKAPP(g_list_first(wmdock->dapps)->data)); + wmdock_order_dockapps(wmdock_get_primary_anchor_dockapp()); } /* Setup the event handler for the window. */ diff --git a/panel-plugin/dockapp.c b/panel-plugin/dockapp.c index 222fd6f..754e24e 100644 --- a/panel-plugin/dockapp.c +++ b/panel-plugin/dockapp.c @@ -99,50 +99,6 @@ static void wmdock_dockapp_child_pos(DockappNode *prevDapp, gint gluepos, gint * /** - * Determine the main anchor DockApp. - * - * @return DockappNode which is the main anchor otherwise NULL. - */ -static DockappNode *wmdock_get_primary_anchor_dockapp() -{ - gint i; - GList *dapps1, *dapps2; - DockappNode *dapp1 = NULL, *dapp2 = NULL; - - dapps1 = g_list_first(wmdock->dapps); - - while(dapps1) { - if(!(dapp1 = DOCKAPP(dapps1->data))) - continue; - - dapps2 = g_list_first(wmdock->dapps); - while(dapps2) { - if(!(dapp2 = DOCKAPP(dapps2->data))) - continue; - - for(i = 0; i < GLUE_MAX; i++) { - if(dapp2->glue[i] == dapp1) - break; - } - if(dapp2->glue[i] == dapp1) - break; - - dapps2 = g_list_next(dapps2); - } - /* Main anchor DockApp found. */ - if(!dapps2) { - debug("dockapp.c: Found primary dockapp `%s'", dapp1->name); - return(dapp1); - } - - dapps1 = g_list_next(dapps1); - } - - return NULL; -} - - -/** * Calculate the next snapable postion of the moving DockApp. * * @parm dapp The moving DockApp. @@ -289,6 +245,50 @@ static gboolean wmdock_replace_tile_dummy(DockappNode *dapp) /** + * Determine the main anchor DockApp. + * + * @return DockappNode which is the main anchor otherwise NULL. + */ +DockappNode *wmdock_get_primary_anchor_dockapp() +{ + gint i; + GList *dapps1, *dapps2; + DockappNode *dapp1 = NULL, *dapp2 = NULL; + + dapps1 = g_list_first(wmdock->dapps); + + while(dapps1) { + if(!(dapp1 = DOCKAPP(dapps1->data))) + continue; + + dapps2 = g_list_first(wmdock->dapps); + while(dapps2) { + if(!(dapp2 = DOCKAPP(dapps2->data))) + continue; + + for(i = 0; i < GLUE_MAX; i++) { + if(dapp2->glue[i] == dapp1) + break; + } + if(dapp2->glue[i] == dapp1) + break; + + dapps2 = g_list_next(dapps2); + } + /* Main anchor DockApp found. */ + if(!dapps2) { + debug("dockapp.c: Found primary dockapp `%s'", dapp1->name); + return(dapp1); + } + + dapps1 = g_list_next(dapps1); + } + + return NULL; +} + + +/** * Event handle for the tile in panel off mode (button_press) * * @param tile The window of the event. @@ -661,24 +661,6 @@ void wmdock_update_tile_background(DockappNode *dapp) /** - * Get the information if the dockapp the first one. - * - * @param dapp DockappNode to check. - * @return gboolean TRUE if is the first dockapp otherwise false. - */ -gboolean wmdock_is_first_dockapp(DockappNode *dapp) -{ - if(!dapp) - return FALSE; - - if(DOCKAPP(g_list_first(wmdock->dapps)->data) == dapp) - return TRUE; - - return FALSE; -} - - -/** * Get parent dockapp. * * @param dapp Child dockapp. @@ -826,7 +808,7 @@ void wmdock_set_autoposition_dockapp(DockappNode *dapp, DockappNode *prevDapp) gint x, y, i, offsetx, offsety, gluepos = GLUE_MAX; XfceScreenPosition xfceScrPos; - if(!IS_PANELOFF(wmdock)) + if(! IS_PANELOFF(wmdock) || !dapp ) return; /* Setup the position of the first dockapp. */ @@ -952,7 +934,7 @@ void wmdock_order_dockapps(DockappNode *dapp) { gint i; - if(! IS_PANELOFF(wmdock) || !dapp) + if(! IS_PANELOFF(wmdock) || !dapp ) return; for(i = 0; i < GLUE_MAX; i++) { diff --git a/panel-plugin/dockapp.h b/panel-plugin/dockapp.h index 7de5de3..ffae656 100644 --- a/panel-plugin/dockapp.h +++ b/panel-plugin/dockapp.h @@ -64,8 +64,8 @@ void wmdock_set_autoposition_dockapp(DockappNode *, DockappNode *); void wmdock_refresh_bg(GtkWidget *widget); void wmdock_set_tile_background(DockappNode *, GdkPixbuf *); void wmdock_update_tile_background(DockappNode *); -gboolean wmdock_is_first_dockapp(DockappNode *); DockappNode *wmdock_get_parent_dockapp(DockappNode *); +DockappNode *wmdock_get_primary_anchor_dockapp(); void wmdock_dockapp_tofront(DockappNode *dapp); void wmdock_dockapp_event_after_handler(GtkWidget *, GdkEvent *, DockappNode *); void wmdock_dockapp_button_press_handler(GtkWidget *, GdkEventButton *, DockappNode *); diff --git a/panel-plugin/rcfile.c b/panel-plugin/rcfile.c index 333b83b..99caf87 100644 --- a/panel-plugin/rcfile.c +++ b/panel-plugin/rcfile.c @@ -116,9 +116,10 @@ void wmdock_write_rc_file (XfcePanelPlugin *plugin) { gchar *file; XfceRc *rc; - gchar **cmds; + gchar **cmds = NULL; + GList *dapps; DockappNode *dapp = NULL; - gint i; + gint i = 0; if (!(file = xfce_panel_plugin_save_location (plugin, TRUE))) return; @@ -128,17 +129,15 @@ void wmdock_write_rc_file (XfcePanelPlugin *plugin) if (!rc) return; if(g_list_length (wmdock->dapps) > 0) { - cmds = g_malloc(sizeof (gchar *) * (g_list_length (wmdock->dapps) + 1)); - - for(i = 0; i < g_list_length(wmdock->dapps); i++) { - dapp = DOCKAPP(g_list_nth_data(wmdock->dapps, i)); - if(dapp) { - if(dapp->name && dapp->cmd) - cmds[i] = g_strdup(dapp->cmd); - } + cmds = g_malloc0(sizeof (gchar *) * (g_list_length (wmdock->dapps) + 1)); + + dapps = g_list_first(wmdock->dapps); + while(dapps) { + dapp = DOCKAPP(dapps->data); + if(dapp && dapp->cmd) + cmds[i++] = g_strdup(dapp->cmd); + dapps = g_list_next(dapps); } - /* Workaround for a xfce bug in xfce_rc_read_list_entry */ - cmds[i] = NULL; xfce_rc_write_list_entry(rc, "cmds", cmds, ";"); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits