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