Updating branch refs/heads/0.6.x
         to 492cf84ee4cbf44dc760d48ed4df999fc4e49a92 (commit)
       from 1dc25d2ff953e6869df442a27e0a0f347730c23d (commit)

commit 492cf84ee4cbf44dc760d48ed4df999fc4e49a92
Author: Andre Ellguth <an...@ellguth.com>
Date:   Thu Oct 17 23:00:48 2013 +0200

    Free positioning of first dockapp now working. Fixed some bugs trigger 
panel on/off.

 panel-plugin/dockapp.c |   45 +++++++++++++++++++++++++++---------
 panel-plugin/props.c   |   59 +++++++++++++++++++++++++-----------------------
 panel-plugin/rcfile.c  |   32 ++++++++++++++++++--------
 panel-plugin/rcfile.h  |   13 +++++++++++
 panel-plugin/wmdock.c  |   35 ++++++++++++++--------------
 panel-plugin/wmdock.h  |    2 ++
 6 files changed, 121 insertions(+), 65 deletions(-)

diff --git a/panel-plugin/dockapp.c b/panel-plugin/dockapp.c
index cd15145..c14ed46 100644
--- a/panel-plugin/dockapp.c
+++ b/panel-plugin/dockapp.c
@@ -41,6 +41,7 @@
 #include "debug.h"
 #include "dnd.h"
 #include "misc.h"
+#include "rcfile.h"
 #include "props.h"
 
 #define DEFAULT_XPANEL_NAME "xfce4-panel"
@@ -296,8 +297,12 @@ static void 
wmdock_dockapp_button_release_handler(GtkWidget *window, GdkEventBut
                debug("dockapp.c: Replaceable dummy tile found.");
                wmdock_order_dockapps(wmdock_get_primary_anchor_dockapp() ? 
wmdock_get_primary_anchor_dockapp() : dapp);
        } else {
+               if(dapp == wmdock_get_primary_anchor_dockapp())
+                       gtk_window_get_position(GTK_WINDOW(dapp->tile), 
&wmdock->panelOffFpX, &wmdock->panelOffFpY);
                wmdock_remove_anchors_tile_dummy();
                wmdock_set_autoposition_dockapp(dapp, 
wmdock_get_parent_dockapp(dapp));
+               if(dapp == wmdock_get_primary_anchor_dockapp())
+                       wmdock_order_dockapps(dapp);
        }
        if(dappDummy) {
                gtk_widget_hide(dappDummy->tile);
@@ -318,7 +323,7 @@ static void wmdock_dockapp_button_release_handler(GtkWidget 
*window, GdkEventBut
  */
 static void wmdock_dockapp_motion_notify_handler(GtkWidget *window, 
GdkEventMotion *ev, DockappNode *dapp)
 {
-       gint gluepos, x, y, posx, posy;
+       gint gluepos, x, y, posx, posy, movex, movey;
        DockappNode *dappSnap = NULL;
        GdkModifierType m;
 
@@ -332,7 +337,20 @@ static void wmdock_dockapp_motion_notify_handler(GtkWidget 
*window, GdkEventMoti
                gtk_window_get_position(GTK_WINDOW(dapp->tile), &posx, &posy);
                debug("dockapp.c: Mouse x: %d,  Mouse y: %d,  Dapp x: %d, Dapp 
y: %d,  Msx: %d,  Msy: %d",
                                x, y, posx, posy, motionstartx, motionstarty);
-               gtk_window_move(GTK_WINDOW(dapp->tile), posx - (motionstartx - 
x), posy - (motionstarty - y));
+
+               movex = posx - (motionstartx - x);
+               movey = posy - (motionstarty - y);
+               if(wmdock->propPanelOffFreePositioning == TRUE && dapp == 
wmdock_get_primary_anchor_dockapp()) {
+                       if (movex <= 0)
+                               movex = 0;
+                       if (movex >= 
gdk_screen_get_width(get_current_gdkscreen()) - DEFAULT_DOCKAPP_WIDTH)
+                               movex = 
gdk_screen_get_width(get_current_gdkscreen()) - DEFAULT_DOCKAPP_WIDTH;
+                       if (movey <= 0)
+                               movey = 0;
+                       if (movey >= 
gdk_screen_get_height(get_current_gdkscreen()) - DEFAULT_DOCKAPP_HEIGHT)
+                               movey = 
gdk_screen_get_height(get_current_gdkscreen()) - DEFAULT_DOCKAPP_HEIGHT;
+               }
+               gtk_window_move(GTK_WINDOW(dapp->tile), movex, movey);
        }
 
        if(dappOnMotion == dapp) {
@@ -854,6 +872,10 @@ GtkWidget *wmdock_create_tile_from_socket(DockappNode 
*dapp)
        gtk_widget_set_size_request(GTK_WIDGET(dapp->bg), 
DEFAULT_DOCKAPP_WIDTH, DEFAULT_DOCKAPP_HEIGHT);
        gtk_container_add(GTK_CONTAINER(_evbox), GTK_WIDGET(dapp->bg));
 
+       /* Set the background style of the tile window like the XFCE panel. */
+       gtk_widget_set_style(GTK_WIDGET(dapp->evbox), 
gtk_widget_get_style(GTK_WIDGET(wmdock->plugin)));
+       gtk_widget_set_style(GTK_WIDGET(_evbox), 
gtk_widget_get_style(GTK_WIDGET(wmdock->plugin)));
+
        if( IS_PANELOFF(wmdock) ) {
                /* If propDispPanelOff is true create a separate window with the
                 * Dockapp in it. It's emulates WindowMaker much more.
@@ -879,9 +901,6 @@ GtkWidget *wmdock_create_tile_from_socket(DockappNode *dapp)
                /* Hide window from the taskbar and the pager. */
                gtk_window_set_skip_taskbar_hint(GTK_WINDOW(tile), TRUE);
                gtk_window_set_skip_pager_hint(GTK_WINDOW(tile), TRUE);
-               /* Set the background style of the tile window like the XFCE 
panel. */
-               gtk_widget_set_style(GTK_WIDGET(dapp->evbox), 
gtk_widget_get_style(GTK_WIDGET(wmdock->plugin)));
-               gtk_widget_set_style(GTK_WIDGET(_evbox), 
gtk_widget_get_style(GTK_WIDGET(wmdock->plugin)));
 
                gtk_container_add(GTK_CONTAINER(tile), _fixed);
 
@@ -913,9 +932,7 @@ void wmdock_set_autoposition_dockapp(DockappNode *dapp, 
DockappNode *prevDapp)
        /* Setup the position of the first dockapp. */
        panelx = panely = plugx = plugy = x = y = 0;
 
-       gtk_window_get_position(
-                       GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET 
(wmdock->plugin))),
-                       &panelx, &panely);
+       gtk_window_get_position(GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET 
(wmdock->plugin))), &panelx, &panely);
        gdk_window_get_position (GDK_WINDOW (GTK_WIDGET 
(wmdock->plugin)->window), &plugx, &plugy);
 
        for(i = 0; prevDapp && i < GLUE_MAX; i++) {
@@ -1019,6 +1036,14 @@ void wmdock_set_autoposition_dockapp(DockappNode *dapp, 
DockappNode *prevDapp)
                                x = y = 0;
                                break;
                        }
+
+                       if(wmdock->propPanelOffFreePositioning == TRUE) {
+                               /* If panelOffFpX, panelOffFpy uninitialized 
(G_MININT) set the determined value,
+                                * otherwise set the stored value to x and y.
+                                */
+                               x = wmdock->panelOffFpX == 
RCDEFAULT_PANELOFFFPX ? x : wmdock->panelOffFpX;
+                               y = wmdock->panelOffFpY == 
RCDEFAULT_PANELOFFFPY ? y : wmdock->panelOffFpY;
+                       }
                } /* else */
        }
 
@@ -1043,9 +1068,7 @@ void wmdock_order_dockapps(DockappNode *dapp)
                return;
 
        for(i = 0; i < GLUE_MAX; i++) {
-               if(wmdock->propPanelOffFreePositioning == FALSE ||
-                               (wmdock->propPanelOffFreePositioning == TRUE && 
dapp != wmdock_get_primary_anchor_dockapp()))
-                       wmdock_set_autoposition_dockapp(dapp, 
wmdock_get_parent_dockapp(dapp));
+               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 e4ae223..a770a40 100644
--- a/panel-plugin/props.c
+++ b/panel-plugin/props.c
@@ -59,6 +59,20 @@ static struct {
 static GtkWidget *btnProperties = NULL;
 
 
+static void wmdock_set_prop_paneloff(gboolean enabled)
+{
+       gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffBL), enabled);
+       gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffBR), enabled);
+       gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffTL), enabled);
+       gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffTR), enabled);
+       gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffKeepAbove), 
enabled);
+       gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffFreePositioning), 
enabled);
+       gtk_widget_set_sensitive(GTK_WIDGET(prop.chkPanelOffIgnoreOffset), 
enabled);
+       gtk_widget_set_sensitive(GTK_WIDGET(prop.lblPanelOffPlacement), 
enabled);
+       gtk_widget_set_sensitive(GTK_WIDGET(prop.lblPanelOffHint), enabled);
+}
+
+
 static void wmdock_properties_fillcmbx(DockappNode *dapp, GtkWidget 
*gtkComboBox)
 {
 
@@ -115,6 +129,14 @@ static void 
wmdock_properties_chkpaneloffkeepabove(GtkToggleButton *gtkChkPanelO
 }
 
 
+static void wmdock_properties_chkpanelofffreepositioning(GtkToggleButton 
*gtkChkPanelOffFreePositioning, gpointer user_data)
+{
+       wmdock->propPanelOffFreePositioning = 
gtk_toggle_button_get_active(gtkChkPanelOffFreePositioning);
+       wmdock->panelOffFpY = wmdock->panelOffFpX = G_MININT;
+       wmdock_order_dockapps(wmdock_get_primary_anchor_dockapp());
+}
+
+
 static void wmdock_properties_radiopaneloff(GtkRadioButton *gtkRadioPanelOff, 
gpointer user_data)
 {
        gint _anchorPos = wmdock->anchorPos;
@@ -128,6 +150,7 @@ static void wmdock_properties_radiopaneloff(GtkRadioButton 
*gtkRadioPanelOff, gp
        else if(gtkRadioPanelOff == GTK_RADIO_BUTTON(prop.radioPanelOffBR))
                _anchorPos = ANCHOR_BR;
 
+       wmdock->panelOffFpX = wmdock->panelOffFpY = G_MININT;
        wmdock_set_new_anchorpos(_anchorPos);
        wmdock->anchorPos = _anchorPos;
        wmdock_order_dockapps(wmdock_get_primary_anchor_dockapp());
@@ -138,25 +161,9 @@ static void wmdock_properties_chkpaneloff(GtkToggleButton 
*gtkChkPanelOff, gpoin
 {
        if((rcPanelOff = gtk_toggle_button_get_active(gtkChkPanelOff)) == TRUE) 
{
                wmdock->anchorPos = get_default_anchor_postion();
-               gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffBL), 
TRUE);
-               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);
+               wmdock_set_prop_paneloff(TRUE);
        } else {
-               gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffBL), 
FALSE);
-               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);
+               wmdock_set_prop_paneloff(FALSE);
        }
 
        if(g_list_length(wmdock->dapps)) {
@@ -510,6 +517,7 @@ void wmdock_properties_dialog(XfcePanelPlugin *plugin)
        gtk_toggle_button_set_active((GtkToggleButton *) prop.chkPanelOff, 
rcPanelOff);
        gtk_toggle_button_set_active((GtkToggleButton *) 
prop.chkPanelOffIgnoreOffset, wmdock->propPanelOffIgnoreOffset);
        gtk_toggle_button_set_active((GtkToggleButton *) 
prop.chkPanelOffKeepAbove, wmdock->propPanelOffKeepAbove);
+       gtk_toggle_button_set_active((GtkToggleButton *) 
prop.chkPanelOffFreePositioning, wmdock->propPanelOffFreePositioning);
 
        gtk_container_add(GTK_CONTAINER(prop.frmGeneral), prop.vboxGeneral);
        gtk_container_add(GTK_CONTAINER(prop.frmDetect), prop.vboxDetect);
@@ -560,17 +568,11 @@ void wmdock_properties_dialog(XfcePanelPlugin *plugin)
                break;
        }
 
-       if ( ! IS_PANELOFF(wmdock) ) {
+       if ( rcPanelOff == FALSE ) {
                /* Disable advanced panel options is the panel used. */
-               gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffBL), 
FALSE);
-               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);
+               wmdock_set_prop_paneloff(FALSE);
+       } else {
+               wmdock_set_prop_paneloff(TRUE);
        }
 
        /* Fill the dockapp chooser with entries. */
@@ -585,6 +587,7 @@ void wmdock_properties_dialog(XfcePanelPlugin *plugin)
        g_signal_connect(G_OBJECT(prop.chkPanelOff), "toggled", 
G_CALLBACK(wmdock_properties_chkpaneloff), NULL);
        g_signal_connect(G_OBJECT(prop.chkPanelOffIgnoreOffset), "toggled", 
G_CALLBACK(wmdock_properties_chkpaneloffignoreoffset), NULL);
        g_signal_connect(G_OBJECT(prop.chkPanelOffKeepAbove), "toggled", 
G_CALLBACK(wmdock_properties_chkpaneloffkeepabove), NULL);
+       g_signal_connect(G_OBJECT(prop.chkPanelOffFreePositioning), "toggled", 
G_CALLBACK(wmdock_properties_chkpanelofffreepositioning), NULL);
        g_signal_connect(G_OBJECT(prop.radioPanelOffTL), "toggled", 
G_CALLBACK(wmdock_properties_radiopaneloff), NULL);
        g_signal_connect(G_OBJECT(prop.radioPanelOffTR), "toggled", 
G_CALLBACK(wmdock_properties_radiopaneloff), NULL);
        g_signal_connect(G_OBJECT(prop.radioPanelOffBL), "toggled", 
G_CALLBACK(wmdock_properties_radiopaneloff), NULL);
diff --git a/panel-plugin/rcfile.c b/panel-plugin/rcfile.c
index aa3ae63..1515777 100644
--- a/panel-plugin/rcfile.c
+++ b/panel-plugin/rcfile.c
@@ -64,18 +64,19 @@ void wmdock_read_rc_file (XfcePanelPlugin *plugin)
                return;
 
        rcCmds                     = xfce_rc_read_list_entry(rc, RCKEY_CMDLIST, 
RC_LIST_DELIMITER);
-       wmdock->propDispTile       = xfce_rc_read_bool_entry (rc, 
RCKEY_DISPTILE, TRUE);
-       wmdock->propDispPropButton = xfce_rc_read_bool_entry (rc, 
RCKEY_DISPPROPBTN, FALSE);
-       wmdock->propDispAddOnlyWM  = xfce_rc_read_bool_entry (rc, 
RCKEY_DISPADDONLYWM, TRUE);
+       wmdock->propDispTile       = xfce_rc_read_bool_entry (rc, 
RCKEY_DISPTILE, RCDEFAULT_DISPTILE);
+       wmdock->propDispPropButton = xfce_rc_read_bool_entry (rc, 
RCKEY_DISPPROPBTN, RCDEFAULT_DISPPROPBTN);
+       wmdock->propDispAddOnlyWM  = xfce_rc_read_bool_entry (rc, 
RCKEY_DISPADDONLYWM, RCDEFAULT_DISPADDONLYWM);
        if(wmdock->filterList) g_free(wmdock->filterList);
        wmdock->filterList         = g_strdup(xfce_rc_read_entry (rc, 
RCKEY_DAFILTER, DOCKAPP_FILTER_PATTERN));
-       /* TODO: Set panel off to FALSE. */
-       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);
+       rcPanelOff                 = wmdock->propPanelOff = 
xfce_rc_read_bool_entry (rc, RCKEY_PANELOFF, RCDEFAULT_PANELOFF);
+       wmdock->propPanelOffIgnoreOffset = xfce_rc_read_bool_entry (rc, 
RCKEY_PANELOFFIGNOREOFFSET, RCDEFAULT_PANELOFFIGNOREOFFSET);
+       wmdock->propPanelOffKeepAbove    = xfce_rc_read_bool_entry (rc, 
RCKEY_PANELOFFKEEPABOVE, RCDEFAULT_PANELOFFKEEPABOVE);
+       wmdock->propPanelOffFreePositioning = xfce_rc_read_bool_entry (rc, 
RCKEY_PANELOFFFREEPOSITIONING, RCDEFAULT_PANELOFFFREEPOSITIONING);
+       wmdock->panelOffFpX        = xfce_rc_read_int_entry(rc, 
RCKEY_PANELOFFFPX, RCDEFAULT_PANELOFFFPX);
+       wmdock->panelOffFpY        = xfce_rc_read_int_entry(rc, 
RCKEY_PANELOFFFPY, RCDEFAULT_PANELOFFFPY);
        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);
+       wmdock->anchorPos          = xfce_rc_read_int_entry(rc, 
RCKEY_ANCHORPOS, RCDEFAULT_ANCHORPOS);
        xfce_rc_close (rc);
 
        if(G_LIKELY(rcCmds != NULL)) {
@@ -209,9 +210,22 @@ void wmdock_write_rc_file (XfcePanelPlugin *plugin)
                xfce_rc_write_bool_entry (rc, RCKEY_DISPPROPBTN, 
wmdock->propDispPropButton);
                xfce_rc_write_bool_entry (rc, RCKEY_DISPADDONLYWM, 
wmdock->propDispAddOnlyWM);
                xfce_rc_write_bool_entry (rc, RCKEY_PANELOFF, rcPanelOff);
+               if(rcPanelOff == FALSE) {
+                       /* Reset the options to default. */
+                       wmdock->propPanelOffFreePositioning = 
RCDEFAULT_PANELOFFFREEPOSITIONING;
+                       wmdock->propPanelOffIgnoreOffset = 
RCDEFAULT_PANELOFFIGNOREOFFSET;
+                       wmdock->propPanelOffKeepAbove = 
RCDEFAULT_PANELOFFKEEPABOVE;
+               }
                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);
+               if(wmdock->propPanelOffFreePositioning == TRUE) {
+                       xfce_rc_write_int_entry (rc, RCKEY_PANELOFFFPX, 
wmdock->panelOffFpX);
+                       xfce_rc_write_int_entry (rc, RCKEY_PANELOFFFPY, 
wmdock->panelOffFpY);
+               } else {
+                       xfce_rc_delete_entry(rc, RCKEY_PANELOFFFPX, TRUE);
+                       xfce_rc_delete_entry(rc, RCKEY_PANELOFFFPY, TRUE);
+               }
                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 d68174b..c1c26cc 100644
--- a/panel-plugin/rcfile.h
+++ b/panel-plugin/rcfile.h
@@ -32,6 +32,8 @@
 #define RCKEY_PANELOFFIGNOREOFFSET     (const gchar *) "paneloffignoreoffset"
 #define RCKEY_PANELOFFKEEPABOVE        (const gchar *) "paneloffkeepabove"
 #define RCKEY_PANELOFFFREEPOSITIONING  (const gchar *) 
"panelofffreepositioning"
+#define RCKEY_PANELOFFFPX              (const gchar *) "panelofffpx"
+#define RCKEY_PANELOFFFPY              (const gchar *) "panelofffpy"
 #define RCKEY_DAFILTER                 (const gchar *) "dafilter"
 #define RCKEY_ANCHORPOS                (const gchar *) "anchorpos"
 #define RCKEY_GLUELIST                 (const gchar *) "glues"
@@ -39,6 +41,17 @@
 #define RC_LIST_DELIMITER   (const gchar *) ";"
 #define RC_GLUE_DELIMITER   (const gchar *) ","
 
+#define RCDEFAULT_DISPTILE                (gboolean) TRUE
+#define RCDEFAULT_DISPPROPBTN             (gboolean) FALSE
+#define RCDEFAULT_DISPADDONLYWM           (gboolean) TRUE
+#define RCDEFAULT_PANELOFF                (gboolean) FALSE
+#define RCDEFAULT_PANELOFFIGNOREOFFSET    (gboolean) FALSE
+#define RCDEFAULT_PANELOFFKEEPABOVE       (gboolean) FALSE
+#define RCDEFAULT_PANELOFFFREEPOSITIONING (gboolean) FALSE
+#define RCDEFAULT_PANELOFFFPX             (gint) G_MININT
+#define RCDEFAULT_PANELOFFFPY             (gint) G_MININT
+#define RCDEFAULT_ANCHORPOS               (gint) -1
+
 /* Prototypes */
 void wmdock_read_rc_file (XfcePanelPlugin *);
 void wmdock_write_rc_file (XfcePanelPlugin *);
diff --git a/panel-plugin/wmdock.c b/panel-plugin/wmdock.c
index 3fefefa..b2b729c 100644
--- a/panel-plugin/wmdock.c
+++ b/panel-plugin/wmdock.c
@@ -67,21 +67,21 @@ static void wmdock_orientation_changed (XfcePanelPlugin 
*plugin, GtkOrientation
        gtk_widget_show(GTK_WIDGET(wmdock->panelBox));
        gtk_widget_show(GTK_WIDGET(wmdock->box));
 
-       if( IS_PANELOFF(wmdock) )
+       if( IS_PANELOFF(wmdock) && wmdock->propPanelOffFreePositioning == FALSE 
)
                wmdock_order_dockapps(wmdock_get_primary_anchor_dockapp());
 }
 
 
 static void wmdock_resolution_changed (GdkScreen *screen, gpointer data)
 {
-       if( IS_PANELOFF(wmdock) )
+       if( IS_PANELOFF(wmdock) && wmdock->propPanelOffFreePositioning == FALSE 
)
                wmdock_order_dockapps(wmdock_get_primary_anchor_dockapp());
 }
 
 
 static void wmdock_monitors_changed (GdkScreen *screen, gpointer data)
 {
-       if( IS_PANELOFF(wmdock) )
+       if( IS_PANELOFF(wmdock) && wmdock->propPanelOffFreePositioning == FALSE 
)
                wmdock_order_dockapps(wmdock_get_primary_anchor_dockapp());
 }
 
@@ -97,7 +97,7 @@ static gboolean wmdock_size_changed (XfcePanelPlugin *plugin, 
int size)
 
        if(wmdockIcon)
                wmdock_panel_draw_wmdock_icon(TRUE);
-       if( IS_PANELOFF(wmdock) )
+       if( IS_PANELOFF(wmdock) && wmdock->propPanelOffFreePositioning == FALSE 
)
                wmdock_order_dockapps(wmdock_get_primary_anchor_dockapp());
 
        return TRUE;
@@ -127,19 +127,20 @@ static void wmdock_free_data(XfcePanelPlugin *plugin)
 
 static WmdockPlugin *wmdock_plugin_new (XfcePanelPlugin* plugin)
 {
-       wmdock                     = g_new0(WmdockPlugin, 1);
-       wmdock->plugin             = plugin;
-       wmdock->dapps              = NULL;
-       wmdock->propDispTile       = TRUE;
-       wmdock->propDispPropButton = FALSE;
-       wmdock->propDispAddOnlyWM  = TRUE;
-       /* TODO: Set panel off to FALSE. */
-       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();
+       wmdock                              = g_new0(WmdockPlugin, 1);
+       wmdock->plugin                      = plugin;
+       wmdock->dapps                       = NULL;
+       wmdock->propDispTile                = RCDEFAULT_DISPTILE;
+       wmdock->propDispPropButton          = RCDEFAULT_DISPPROPBTN;
+       wmdock->propDispAddOnlyWM           = RCDEFAULT_DISPADDONLYWM;
+       wmdock->propPanelOff                = RCDEFAULT_PANELOFF;
+       wmdock->propPanelOffIgnoreOffset    = RCDEFAULT_PANELOFFIGNOREOFFSET;
+       wmdock->propPanelOffKeepAbove       = RCDEFAULT_PANELOFFKEEPABOVE;
+       wmdock->propPanelOffFreePositioning = RCDEFAULT_PANELOFFKEEPABOVE;
+       wmdock->panelOffFpX                 = RCDEFAULT_PANELOFFFPX;
+       wmdock->panelOffFpY                 = RCDEFAULT_PANELOFFFPY;
+       wmdock->filterList                  = g_strdup(DOCKAPP_FILTER_PATTERN);
+       wmdock->anchorPos                   = get_default_anchor_postion();
 
        wmdock->eventBox = gtk_event_box_new ();
        gtk_widget_show(GTK_WIDGET(wmdock->eventBox));
diff --git a/panel-plugin/wmdock.h b/panel-plugin/wmdock.h
index a3ad67a..0475a9e 100644
--- a/panel-plugin/wmdock.h
+++ b/panel-plugin/wmdock.h
@@ -52,6 +52,8 @@ typedef struct {
  gboolean            propPanelOffIgnoreOffset;
  gboolean            propPanelOffKeepAbove;
  gboolean            propPanelOffFreePositioning;
+ gint                panelOffFpX;
+ gint                panelOffFpY;
  AnchorPostion       anchorPos;
  gchar               *filterList;
 
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to