Updating branch refs/heads/master to 72d1dc630750645d7741f4755dbc727eb973b0ea (commit) from df03e90a64c1883f54a240029a5ea2832c36771b (commit)
commit 72d1dc630750645d7741f4755dbc727eb973b0ea Author: Andre Ellguth <an...@ellguth.com> Date: Tue Jul 23 20:52:56 2013 +0200 Some work for the dockapp movement. panel-plugin/dockapp.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/panel-plugin/dockapp.c b/panel-plugin/dockapp.c index 40900b9..9638cbd 100644 --- a/panel-plugin/dockapp.c +++ b/panel-plugin/dockapp.c @@ -236,12 +236,12 @@ static void wmdock_remove_anchors_tile_dummy() */ static gboolean wmdock_replace_tile_dummy(DockappNode *dapp) { - gint i; - gboolean prim; + gint i, j; GList *dapps; - DockappNode *_dapp = NULL; + DockappNode *_dapp = NULL, *parent = NULL, *_parent = NULL; - prim = (dapp == wmdock_get_primary_anchor_dockapp()) ? TRUE : FALSE; + parent = wmdock_get_parent_dockapp(dapp); + debug("dockapp.c: Parent DockApp of `%s' is `%s'", dapp->name, parent ? parent->name : "<none>"); dapps = g_list_first(wmdock->dapps); while(dapps) { @@ -249,13 +249,19 @@ static gboolean wmdock_replace_tile_dummy(DockappNode *dapp) for(i = 0; i < GLUE_MAX; i++) { if(_dapp->glue[i] && !g_strcmp0(_dapp->glue[i]->name, DOCKAPP_DUMMY_TITLE)) { g_list_foreach(wmdock->dapps, (GFunc) wmdock_remove_anchor_dockapp, dapp); - _dapp->glue[i] = dapp; - for(i = 0; i < GLUE_MAX; i++) { - if((dapp->glue[i] == _dapp) || prim == TRUE) { - /* Remove old anchor itself or all anchors it was the first anchor. */ - dapp->glue[i] = NULL; + for(j = 0; j < GLUE_MAX; j++) { + if(parent) { + /* Transfer all connected DockApps to the parent. */ + _parent = parent; + while(_parent->glue[j]) + _parent = _parent->glue[j]; + _parent->glue[j] = dapp->glue[j]; } + /* Remove old anchor itself or all anchors it was the first anchor. */ + dapp->glue[j] = NULL; } + _dapp->glue[i] = dapp; + debug("dockapp.c: Connect `%s' to `%s' with glue.", dapp->name, _dapp->name); return TRUE; } } @@ -457,9 +463,7 @@ DockappNode *wmdock_find_startup_dockapp(const gchar *compCmd) dapps = g_list_first(wmdock->dapps); while(dapps) { - dapp = DOCKAPP(dapps->data); - - if(dapp) { + if((dapp = DOCKAPP(dapps->data))) { if(!dapp->name && dapp->cmd) { if(!g_ascii_strcasecmp(dapp->cmd, compCmd)) { debug("dockapp.c: found startup dockapp with cmd %s", compCmd); @@ -507,8 +511,7 @@ void wmdock_free_dockapp(DockappNode *dapp) DockappNode *_dapp = NULL; if( IS_PANELOFF(wmdock) ) { - _dapp = wmdock_get_parent_dockapp(dapp); - if(_dapp) { + if((_dapp = wmdock_get_parent_dockapp(dapp))) { /* Remove the glue of dapp from the parent. */ wmdock_remove_anchor_dockapp(_dapp, dapp); @@ -518,7 +521,7 @@ void wmdock_free_dockapp(DockappNode *dapp) if(!_dapp->glue[i]) { _dapp->glue[i] = dapp->glue[i]; } else { - // TODO: Verify this code, maybe broken? + /* TODO: Verify this code, maybe broken? */ /* If another glue is on the parent destroy the others. */ wmdock_destroy_dockapp(dapp->glue[i]); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits