Updating branch refs/heads/0.6.x
         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

Reply via email to