Updating branch refs/heads/master to 1dc25d2ff953e6869df442a27e0a0f347730c23d (commit) from 489ca0e314640548c9f604493a19406df8334427 (commit)
commit 1dc25d2ff953e6869df442a27e0a0f347730c23d Author: Andre Ellguth <an...@ellguth.com> Date: Wed Oct 16 19:41:40 2013 +0200 Begin to add a option to enable free positioning of the first dockapp. panel-plugin/dockapp.c | 4 +++- panel-plugin/props.c | 28 +++++++++++++++++++--------- panel-plugin/rcfile.c | 2 ++ panel-plugin/rcfile.h | 23 ++++++++++++----------- panel-plugin/wmdock.c | 1 + panel-plugin/wmdock.h | 1 + 6 files changed, 38 insertions(+), 21 deletions(-) diff --git a/panel-plugin/dockapp.c b/panel-plugin/dockapp.c index 62eee81..cd15145 100644 --- a/panel-plugin/dockapp.c +++ b/panel-plugin/dockapp.c @@ -1043,7 +1043,9 @@ void wmdock_order_dockapps(DockappNode *dapp) return; for(i = 0; i < GLUE_MAX; i++) { - wmdock_set_autoposition_dockapp(dapp, wmdock_get_parent_dockapp(dapp)); + if(wmdock->propPanelOffFreePositioning == FALSE || + (wmdock->propPanelOffFreePositioning == TRUE && dapp != wmdock_get_primary_anchor_dockapp())) + wmdock_set_autoposition_dockapp(dapp, wmdock_get_parent_dockapp(dapp)); debug("dockapp.c: Order dockapp %s", dapp->name); /* Recurse calling wmdock_order_dockapps, to walk the hole tree. */ diff --git a/panel-plugin/props.c b/panel-plugin/props.c index 750aaa9..e4ae223 100644 --- a/panel-plugin/props.c +++ b/panel-plugin/props.c @@ -46,7 +46,7 @@ static struct { GtkWidget *hbox, *hboxPanelOffOpts; /* Horizontal boxes */ GtkWidget *frmGeneral, *frmDetect, *frmPanelOffOpts; /* Frames */ GtkWidget *lblSel, *lblCmd, *lblPanelOffPlacement, *lblPanelOffHint; /* Labels */ - GtkWidget *chkDispTile, *chkPropButton, *chkAddOnlyWM, *chkPanelOff, *chkPanelOffIgnoreOffset, *chkPanelOffKeepAbove; /* Check boxes */ + GtkWidget *chkDispTile, *chkPropButton, *chkAddOnlyWM, *chkPanelOff, *chkPanelOffIgnoreOffset, *chkPanelOffKeepAbove, *chkPanelOffFreePositioning; /* Check boxes */ GtkWidget *radioPanelOffTL, *radioPanelOffTR, *radioPanelOffBL, *radioPanelOffBR; /* Radio buttons */ GtkWidget *imageContainer, *container; /* Misc. containers */ GtkWidget *tblPanelOff; /* Layout tables */ @@ -76,8 +76,7 @@ static void wmdock_properties_chkdisptile(GtkToggleButton *gtkChkDispTile, gpoin g_list_foreach(wmdock->dapps, (GFunc)wmdock_redraw_dockapp, NULL); gtk_widget_show_all(GTK_WIDGET(wmdock->box)); - if( ! IS_PANELOFF(wmdock) ) - wmdock_msg_dialog(GTK_MESSAGE_INFO, _("Changes maybe not work properly until you restart XFCE!")); + wmdock_msg_dialog(GTK_MESSAGE_INFO, _("Changes maybe not work properly until you restart XFCE!")); } @@ -143,6 +142,9 @@ static void wmdock_properties_chkpaneloff(GtkToggleButton *gtkChkPanelOff, gpoin gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffBR), TRUE); gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffTL), TRUE); gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffTR), TRUE); + gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffKeepAbove), TRUE); + gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffFreePositioning), TRUE); + gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffIgnoreOffset), TRUE); gtk_widget_set_sensitive(GTK_WIDGET(prop.lblPanelOffPlacement), TRUE); gtk_widget_set_sensitive(GTK_WIDGET(prop.lblPanelOffHint), TRUE); } else { @@ -150,6 +152,9 @@ static void wmdock_properties_chkpaneloff(GtkToggleButton *gtkChkPanelOff, gpoin gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffBR), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffTL), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffTR), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffKeepAbove), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffFreePositioning), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffIgnoreOffset), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(prop.lblPanelOffPlacement), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(prop.lblPanelOffHint), FALSE); } @@ -488,12 +493,13 @@ void wmdock_properties_dialog(XfcePanelPlugin *plugin) } gtk_box_pack_start (GTK_BOX(prop.vbox2), prop.txtCmd, FALSE, FALSE, 0); - prop.chkDispTile = gtk_check_button_new_with_label(_("Display tile in the background.")); - prop.chkPropButton = gtk_check_button_new_with_label(_("Display a separate WMdock properties button in the panel.")); - prop.chkAddOnlyWM = gtk_check_button_new_with_label(_("Add only dockapps which start with pattern in list. (e.g.: ^wm;^as)")); - prop.chkPanelOff = gtk_check_button_new_with_label(_("Display dockapps in separate windows and not in the panel.")); - prop.chkPanelOffIgnoreOffset = gtk_check_button_new_with_label(_("Don't use panel size as offset for the first dockapp.")); - prop.chkPanelOffKeepAbove = gtk_check_button_new_with_label(_("Keep dockapp windows on top.")); + prop.chkDispTile = gtk_check_button_new_with_label(_("Display tile in the background.")); + prop.chkPropButton = gtk_check_button_new_with_label(_("Display a separate WMdock properties button in the panel.")); + prop.chkAddOnlyWM = gtk_check_button_new_with_label(_("Add only dockapps which start with pattern in list. (e.g.: ^wm;^as)")); + prop.chkPanelOff = gtk_check_button_new_with_label(_("Display dockapps in separate windows and not in the panel.")); + prop.chkPanelOffIgnoreOffset = gtk_check_button_new_with_label(_("Don't use panel size as offset for the first dockapp.")); + prop.chkPanelOffKeepAbove = gtk_check_button_new_with_label(_("Keep dockapp windows on top.")); + prop.chkPanelOffFreePositioning = gtk_check_button_new_with_label(_("Enable free positioning of the first dockapp on the screen.")); prop.txtPatterns = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(prop.txtPatterns), wmdock->filterList); gtk_widget_set_sensitive (GTK_WIDGET (prop.txtPatterns), wmdock->propDispAddOnlyWM); @@ -519,6 +525,7 @@ void wmdock_properties_dialog(XfcePanelPlugin *plugin) gtk_box_pack_start (GTK_BOX(prop.vboxPanelOffOpts), prop.chkPanelOff, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (prop.vboxPanelOffOpts), prop.chkPanelOffKeepAbove, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (prop.vboxPanelOffOpts), prop.chkPanelOffIgnoreOffset, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (prop.vboxPanelOffOpts), prop.chkPanelOffFreePositioning, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(prop.vboxPanelOffOpts), prop.hboxPanelOffOpts, FALSE, FALSE, 0); prop.lblPanelOffHint = gtk_label_new (_("Hint: Is the first dockapp covered by a XFCE panel, please try to move the plugin\nto this panel to correct this problem.")); gtk_box_pack_start (GTK_BOX(prop.vboxPanelOffOpts), prop.lblPanelOffHint, FALSE, FALSE, 0); @@ -559,6 +566,9 @@ void wmdock_properties_dialog(XfcePanelPlugin *plugin) gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffBR), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffTL), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffTR), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffKeepAbove), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffFreePositioning), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffIgnoreOffset), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(prop.lblPanelOffPlacement), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(prop.lblPanelOffHint), FALSE); } diff --git a/panel-plugin/rcfile.c b/panel-plugin/rcfile.c index 9d94bab..aa3ae63 100644 --- a/panel-plugin/rcfile.c +++ b/panel-plugin/rcfile.c @@ -73,6 +73,7 @@ void wmdock_read_rc_file (XfcePanelPlugin *plugin) rcPanelOff = wmdock->propPanelOff = xfce_rc_read_bool_entry (rc, RCKEY_PANELOFF, TRUE); wmdock->propPanelOffIgnoreOffset = xfce_rc_read_bool_entry (rc, RCKEY_PANELOFFIGNOREOFFSET, FALSE); wmdock->propPanelOffKeepAbove = xfce_rc_read_bool_entry (rc, RCKEY_PANELOFFKEEPABOVE, FALSE); + wmdock->propPanelOffFreePositioning = xfce_rc_read_bool_entry (rc, RCKEY_PANELOFFFREEPOSITIONING, FALSE); glueList = IS_PANELOFF(wmdock) ? xfce_rc_read_list_entry(rc, RCKEY_GLUELIST, RC_LIST_DELIMITER) : NULL; wmdock->anchorPos = xfce_rc_read_int_entry(rc, RCKEY_ANCHORPOS, -1); xfce_rc_close (rc); @@ -210,6 +211,7 @@ void wmdock_write_rc_file (XfcePanelPlugin *plugin) xfce_rc_write_bool_entry (rc, RCKEY_PANELOFF, rcPanelOff); xfce_rc_write_bool_entry (rc, RCKEY_PANELOFFIGNOREOFFSET, wmdock->propPanelOffIgnoreOffset); xfce_rc_write_bool_entry (rc, RCKEY_PANELOFFKEEPABOVE, wmdock->propPanelOffKeepAbove); + xfce_rc_write_bool_entry (rc, RCKEY_PANELOFFFREEPOSITIONING, wmdock->propPanelOffFreePositioning); xfce_rc_write_int_entry (rc, RCKEY_ANCHORPOS, wmdock->anchorPos); xfce_rc_write_entry(rc, RCKEY_DAFILTER, wmdock->filterList); } diff --git a/panel-plugin/rcfile.h b/panel-plugin/rcfile.h index 64794ba..d68174b 100644 --- a/panel-plugin/rcfile.h +++ b/panel-plugin/rcfile.h @@ -23,17 +23,18 @@ #ifndef __RCFILE_H__ #define __RCFILE_H__ -#define RCKEY_CMDLIST (const gchar *) "cmds" -#define RCKEY_CMDCNT (const gchar *) "cmdcnt" -#define RCKEY_DISPTILE (const gchar *) "disptile" -#define RCKEY_DISPPROPBTN (const gchar *) "disppropbtn" -#define RCKEY_DISPADDONLYWM (const gchar *) "dispaddonlywm" -#define RCKEY_PANELOFF (const gchar *) "paneloff" -#define RCKEY_PANELOFFIGNOREOFFSET (const gchar *) "paneloffignoreoffset" -#define RCKEY_PANELOFFKEEPABOVE (const gchar *) "paneloffkeepabove" -#define RCKEY_DAFILTER (const gchar *) "dafilter" -#define RCKEY_ANCHORPOS (const gchar *) "anchorpos" -#define RCKEY_GLUELIST (const gchar *) "glues" +#define RCKEY_CMDLIST (const gchar *) "cmds" +#define RCKEY_CMDCNT (const gchar *) "cmdcnt" +#define RCKEY_DISPTILE (const gchar *) "disptile" +#define RCKEY_DISPPROPBTN (const gchar *) "disppropbtn" +#define RCKEY_DISPADDONLYWM (const gchar *) "dispaddonlywm" +#define RCKEY_PANELOFF (const gchar *) "paneloff" +#define RCKEY_PANELOFFIGNOREOFFSET (const gchar *) "paneloffignoreoffset" +#define RCKEY_PANELOFFKEEPABOVE (const gchar *) "paneloffkeepabove" +#define RCKEY_PANELOFFFREEPOSITIONING (const gchar *) "panelofffreepositioning" +#define RCKEY_DAFILTER (const gchar *) "dafilter" +#define RCKEY_ANCHORPOS (const gchar *) "anchorpos" +#define RCKEY_GLUELIST (const gchar *) "glues" #define RC_LIST_DELIMITER (const gchar *) ";" #define RC_GLUE_DELIMITER (const gchar *) "," diff --git a/panel-plugin/wmdock.c b/panel-plugin/wmdock.c index 3db8bcc..3fefefa 100644 --- a/panel-plugin/wmdock.c +++ b/panel-plugin/wmdock.c @@ -137,6 +137,7 @@ static WmdockPlugin *wmdock_plugin_new (XfcePanelPlugin* plugin) wmdock->propPanelOff = TRUE; wmdock->propPanelOffIgnoreOffset = FALSE; wmdock->propPanelOffKeepAbove = FALSE; + wmdock->propPanelOffFreePositioning = FALSE; wmdock->filterList = g_strdup(DOCKAPP_FILTER_PATTERN); wmdock->anchorPos = get_default_anchor_postion(); diff --git a/panel-plugin/wmdock.h b/panel-plugin/wmdock.h index 95aa7fd..a3ad67a 100644 --- a/panel-plugin/wmdock.h +++ b/panel-plugin/wmdock.h @@ -51,6 +51,7 @@ typedef struct { gboolean propPanelOff; gboolean propPanelOffIgnoreOffset; gboolean propPanelOffKeepAbove; + gboolean propPanelOffFreePositioning; AnchorPostion anchorPos; gchar *filterList; _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits