Updating branch refs/heads/0.6.x
         to c1a214c7e557370e87bb3164d43748155793d392 (commit)
       from d4d5da8306e3f12ee9bb80449291971fb6017272 (commit)

commit c1a214c7e557370e87bb3164d43748155793d392
Author: Andre Ellguth <an...@ellguth.com>
Date:   Tue Oct 15 15:01:40 2013 +0200

    Fix some draw glitches in panel mode (I hope).

 panel-plugin/catchwindow.c |    3 +++
 panel-plugin/dockapp.c     |   10 ++++++++--
 panel-plugin/misc.c        |   29 +++++++++++++++++++++++++++++
 panel-plugin/misc.h        |    1 +
 panel-plugin/props.c       |   26 +++++---------------------
 panel-plugin/rcfile.c      |    4 +++-
 6 files changed, 49 insertions(+), 24 deletions(-)

diff --git a/panel-plugin/catchwindow.c b/panel-plugin/catchwindow.c
index a0926bf..76f6b90 100644
--- a/panel-plugin/catchwindow.c
+++ b/panel-plugin/catchwindow.c
@@ -234,6 +234,9 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w)
 
                        /* Setup the event-after handler for the window. */
                        g_signal_connect(G_OBJECT(dapp->tile), "event-after", 
G_CALLBACK(wmdock_dockapp_event_after_handler), dapp);
+               } else {
+                       /* Setup the event-after handler for the eventbox to 
fix some glitches. */
+                       g_signal_connect(G_OBJECT(dapp->evbox), "event-after", 
G_CALLBACK(wmdock_dockapp_event_after_handler), dapp);
                }
                /* Clear the noisy background. */
                wmdock_redraw_dockapp(dapp);
diff --git a/panel-plugin/dockapp.c b/panel-plugin/dockapp.c
index e761a25..f474957 100644
--- a/panel-plugin/dockapp.c
+++ b/panel-plugin/dockapp.c
@@ -461,8 +461,8 @@ DockappNode *wmdock_get_primary_anchor_dockapp()
  */
 void wmdock_dockapp_event_after_handler(GtkWidget *window, GdkEvent *ev, 
DockappNode *dapp)
 {
-       if( ! IS_PANELOFF(wmdock) )
-               return;
+//     if( ! IS_PANELOFF(wmdock) )
+//             return;
 
        debug("dockapp.c: Window event-after: %d. (dapp: `%s'), dappOnMove: 
%s", ev->type, dapp->name, dappOnMotion ? "Yes": "No");
 
@@ -806,6 +806,12 @@ void wmdock_set_tile_background(DockappNode *dapp, 
GdkPixbuf *pb)
        gdk_draw_pixbuf(dapp->bgimg, gc,
                        pb, 0, 0, 0, 0, DEFAULT_DOCKAPP_WIDTH, 
DEFAULT_DOCKAPP_HEIGHT,
                        GDK_RGB_DITHER_NONE, 0, 0);
+       if( ! IS_PANELOFF(wmdock) ) {
+               gdk_window_clear(GTK_WIDGET(dapp->evbox)->window);
+               gdk_draw_pixbuf(GTK_WIDGET(dapp->evbox)->window, gc,
+                               pb, 0, 0, 0, 0, DEFAULT_DOCKAPP_WIDTH, 
DEFAULT_DOCKAPP_HEIGHT,
+                               GDK_RGB_DITHER_NONE, 0, 0);
+       }
        gdk_gc_unref(gc);
 
        if(dapp->bg)
diff --git a/panel-plugin/misc.c b/panel-plugin/misc.c
index 8cea694..4b3d89a 100644
--- a/panel-plugin/misc.c
+++ b/panel-plugin/misc.c
@@ -316,3 +316,32 @@ void wmdock_panel_draw_wmdock_icon (gboolean redraw)
 
        gtk_widget_show_all(GTK_WIDGET(eventBox));
 }
+
+
+/**
+ * Function destroys the info dialog.
+ *
+ */
+static void wmdock_info_dialog_response (GtkWidget  *gtkDlg, gint response)
+{
+       gtk_widget_destroy (gtkDlg);
+}
+
+
+/**
+ * Function shows an info message (msg) in a dialog box.
+ *
+ * @param msg The info message as null terminated string.
+ */
+void wmdock_info_dialog(const gchar *msg)
+{
+       GtkWidget *gtkDlg = NULL;
+
+       gtkDlg = gtk_message_dialog_new(GTK_WINDOW (gtk_widget_get_toplevel 
(GTK_WIDGET (wmdock->plugin))),
+                       GTK_DIALOG_DESTROY_WITH_PARENT,
+                       GTK_MESSAGE_INFO,
+                       GTK_BUTTONS_OK,
+                       msg);
+       g_signal_connect (gtkDlg, "response", G_CALLBACK 
(wmdock_info_dialog_response), NULL);
+       gtk_widget_show_all (gtkDlg);
+}
diff --git a/panel-plugin/misc.h b/panel-plugin/misc.h
index 9d52ea4..448c2ff 100644
--- a/panel-plugin/misc.h
+++ b/panel-plugin/misc.h
@@ -33,5 +33,6 @@ gboolean comp_str_with_pattern(const gchar *, gchar *, gsize);
 void wmdock_panel_draw_wmdock_icon (gboolean redraw);
 int wmdock_get_instance_count();
 AnchorPostion get_default_anchor_postion();
+void wmdock_info_dialog(const gchar *);
 
 #endif /* __MISC_H__ */
diff --git a/panel-plugin/props.c b/panel-plugin/props.c
index 6bc7f04..4552e96 100644
--- a/panel-plugin/props.c
+++ b/panel-plugin/props.c
@@ -59,12 +59,6 @@ static struct {
 static GtkWidget *btnProperties = NULL;
 
 
-static void wmdock_info_dialog_response (GtkWidget  *gtkDlg, gint response)
-{
-       gtk_widget_destroy (gtkDlg);
-}
-
-
 static void wmdock_properties_fillcmbx(DockappNode *dapp, GtkWidget 
*gtkComboBox)
 {
 
@@ -81,6 +75,9 @@ 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_info_dialog(_("Changes maybe not work properly until you 
restart XFCE!"));
 }
 
 
@@ -140,8 +137,6 @@ static void wmdock_properties_radiopaneloff(GtkRadioButton 
*gtkRadioPanelOff, gp
 
 static void wmdock_properties_chkpaneloff(GtkToggleButton *gtkChkPanelOff, 
gpointer user_data)
 {
-       GtkWidget *gtkDlg;
-
        if((rcPanelOff = gtk_toggle_button_get_active(gtkChkPanelOff)) == TRUE) 
{
                wmdock->anchorPos = get_default_anchor_postion();
                gtk_widget_set_sensitive(GTK_WIDGET(prop.radioPanelOffBL), 
TRUE);
@@ -158,13 +153,7 @@ static void wmdock_properties_chkpaneloff(GtkToggleButton 
*gtkChkPanelOff, gpoin
        }
 
        if(g_list_length(wmdock->dapps)) {
-               gtkDlg = gtk_message_dialog_new(GTK_WINDOW 
(gtk_widget_get_toplevel (GTK_WIDGET (wmdock->plugin))),
-                               GTK_DIALOG_DESTROY_WITH_PARENT,
-                               GTK_MESSAGE_INFO,
-                               GTK_BUTTONS_OK,
-                               _("Changes will take effect when you restart 
XFCE!"));
-               g_signal_connect (gtkDlg, "response", G_CALLBACK 
(wmdock_info_dialog_response), NULL);
-               gtk_widget_show_all (gtkDlg);
+               wmdock_info_dialog(_("Changes will take effect when you restart 
XFCE!"));
        } else {
                /* If no dockapp is started enable/disable panel off mode. */
                wmdock->propPanelOff = rcPanelOff;
@@ -539,12 +528,7 @@ void wmdock_properties_dialog(XfcePanelPlugin *plugin)
        gtk_table_attach_defaults(GTK_TABLE(prop.tblPanelOff), 
prop.radioPanelOffTR, 1, 2, 0, 1);
        gtk_table_attach_defaults(GTK_TABLE(prop.tblPanelOff), 
prop.radioPanelOffBL, 0, 1, 1, 2);
        gtk_table_attach_defaults(GTK_TABLE(prop.tblPanelOff), 
prop.radioPanelOffBR, 1, 2, 1, 2);
-       /*
-       gtk_box_pack_start (GTK_BOX (prop.hboxPanelOffOpts), 
prop.radioPanelOffTL, FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX (prop.hboxPanelOffOpts), 
prop.radioPanelOffTR, FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX (prop.hboxPanelOffOpts), 
prop.radioPanelOffBL, FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX (prop.hboxPanelOffOpts), 
prop.radioPanelOffBR, FALSE, FALSE, 0);
-       */
+
        switch(wmdock->anchorPos) {
        case ANCHOR_TL:
                
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prop.radioPanelOffTL), TRUE);
diff --git a/panel-plugin/rcfile.c b/panel-plugin/rcfile.c
index 1bd4bd5..99bacd7 100644
--- a/panel-plugin/rcfile.c
+++ b/panel-plugin/rcfile.c
@@ -208,6 +208,8 @@ void wmdock_write_rc_file (XfcePanelPlugin *plugin)
                if( IS_PANELOFF(wmdock) ) {
                        xfce_rc_write_list_entry(rc, RCKEY_GLUELIST, glueList, 
RC_LIST_DELIMITER);
                        g_strfreev(glueList);
+               } else if ( ! IS_PANELOFF(wmdock) || rcPanelOff == FALSE ) {
+                       xfce_rc_delete_entry(rc, RCKEY_GLUELIST, TRUE);
                }
 
                xfce_rc_write_bool_entry (rc, RCKEY_DISPTILE, 
wmdock->propDispTile);
@@ -216,8 +218,8 @@ 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_entry(rc, RCKEY_DAFILTER, wmdock->filterList);
                xfce_rc_write_int_entry (rc, RCKEY_ANCHORPOS, 
wmdock->anchorPos);
+               xfce_rc_write_entry(rc, RCKEY_DAFILTER, wmdock->filterList);
        }
 
        xfce_rc_close(rc);
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to