[Xfce4-commits] <xfce4-wmdock-plugin:0.6.x> Code cleanup. Some changes for rc startup.
Andre Ellguth
noreply at xfce.org
Tue Oct 1 18:02:01 CEST 2013
Updating branch refs/heads/0.6.x
to b55aaf8bcf20cd68c0349023b40cd972794580d4 (commit)
from 2cb7071d1af48b065f8e46e279d6586806b3736e (commit)
commit b55aaf8bcf20cd68c0349023b40cd972794580d4
Author: Andre Ellguth <andre at 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, ";");
More information about the Xfce4-commits
mailing list