Updating branch refs/heads/master to cf8c5aded86146c98266e04db982933ff9dd6373 (commit) from 492cf84ee4cbf44dc760d48ed4df999fc4e49a92 (commit)
commit cf8c5aded86146c98266e04db982933ff9dd6373 Author: Andre Ellguth <an...@ellguth.com> Date: Fri Oct 18 19:35:30 2013 +0200 Fixed some bugs detected with valgrind. Some dockapp detection changes. panel-plugin/catchwindow.c | 13 +++++++++---- panel-plugin/dockapp.c | 13 +++++++++---- panel-plugin/misc.c | 4 +++- panel-plugin/rcfile.c | 5 +++-- panel-plugin/wmdock.c | 3 +-- 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/panel-plugin/catchwindow.c b/panel-plugin/catchwindow.c index 431aec3..2a40200 100644 --- a/panel-plugin/catchwindow.c +++ b/panel-plugin/catchwindow.c @@ -114,11 +114,12 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) h = XGetWMHints(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), wnck_window_get_xid(w)); - if(!h) return; + if(!h) + return; if(h->initial_state == WithdrawnState || - h->flags == (WindowGroupHint | StateHint | IconWindowHint) - || has_dockapp_hint(w)) { + h->flags == (WindowGroupHint | StateHint | IconWindowHint) || + has_dockapp_hint(w) == TRUE) { debug("catchwindow.c: new wmapp open"); debug("catchwindow.c: New dockapp %s with xid: 0x%x pid: %u arrived sessid: %s", @@ -149,9 +150,11 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) } if(h->initial_state == WithdrawnState && h->icon_window) { + debug("catchwindow.c: Initial_state: %d with icon of window %s", h->initial_state, wnck_window_get_name(w)); XUnmapWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), wnck_window_get_xid(w)); dapp->i =h->icon_window; } else { + debug("catchwindow.c: Initial_state: %d %s of window %s", h->initial_state, h->icon_window ? "with icon" : "no icon", wnck_window_get_name(w)); dapp->i = wnck_window_get_xid(w); } @@ -195,7 +198,9 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w) } /* Cleanly unmap the original window. */ - XUnmapWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), dapp->i); + /* TODO: Verify is XUnmapWindow always not required. + * XUnmapWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), dapp->i); + */ if(rcDapp == FALSE) { dapp->tile = wmdock_create_tile_from_socket(dapp); diff --git a/panel-plugin/dockapp.c b/panel-plugin/dockapp.c index c14ed46..230e7e6 100644 --- a/panel-plugin/dockapp.c +++ b/panel-plugin/dockapp.c @@ -119,6 +119,7 @@ static DockappNode *wmdock_get_snapable_dockapp(DockappNode *dapp, gint *gluepos if( ! IS_PANELOFF(wmdock) ) return NULL; + posx = posy = gluex = gluey = 0; prim = (dapp == wmdock_get_primary_anchor_dockapp()) ? TRUE : FALSE; switch(wmdock->anchorPos) { @@ -452,7 +453,7 @@ DockappNode *wmdock_get_primary_anchor_dockapp() if(dapp2->glue[i] == dapp1) break; } - if(dapp2->glue[i] == dapp1) + if(i < GLUE_MAX && dapp2->glue[i] == dapp1) break; dapps2 = g_list_next(dapps2); @@ -569,8 +570,12 @@ gboolean wmdock_startup_dockapp(const gchar *cmd) void wmdock_destroy_dockapp(DockappNode *dapp) { - debug("dockapp.c: Destroy dockapp %s", dapp->name); - XDestroyWindow(GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()), dapp->i); + Display *display = NULL; + + if(dapp && (display = GDK_DISPLAY_XDISPLAY(get_current_gdkdisplay()))) { + XDestroyWindow(display, dapp->i); + debug("dockapp.c: Destroy dockapp %s", dapp->name); + } } @@ -932,7 +937,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++) { diff --git a/panel-plugin/misc.c b/panel-plugin/misc.c index 998206f..f260f75 100644 --- a/panel-plugin/misc.c +++ b/panel-plugin/misc.c @@ -258,6 +258,7 @@ int wmdock_get_instance_count() if(!fp) return(-1); + memset(buf, '\0', BUF_MAX * sizeof(char)); strncpy(username, (const char *) g_get_user_name(), BUF_MAX); while(!feof(fp)) { buf[0] = 0; @@ -286,7 +287,8 @@ void wmdock_panel_draw_wmdock_icon (gboolean redraw) if(redraw == TRUE && wmdockIcon) { gtk_image_set_from_pixbuf (GTK_IMAGE(wmdockIcon), gdkPbIcon); } else { - if(wmdockIcon) gtk_widget_destroy(wmdockIcon); + if(wmdockIcon) + gtk_widget_destroy(wmdockIcon); wmdockIcon = gtk_image_new_from_pixbuf (gdkPbIcon); gtk_box_pack_start(GTK_BOX(wmdock->box), GTK_WIDGET(wmdockIcon), FALSE, FALSE, 0); diff --git a/panel-plugin/rcfile.c b/panel-plugin/rcfile.c index 1515777..d804fff 100644 --- a/panel-plugin/rcfile.c +++ b/panel-plugin/rcfile.c @@ -141,12 +141,13 @@ void wmdock_read_rc_file (XfcePanelPlugin *plugin) } g_strfreev(glueInfo); } - - g_strfreev(glueList); } g_free(launched); } /* rcCmds != NULL */ + + if(glueList) + g_strfreev(glueList); } diff --git a/panel-plugin/wmdock.c b/panel-plugin/wmdock.c index b2b729c..509bc8a 100644 --- a/panel-plugin/wmdock.c +++ b/panel-plugin/wmdock.c @@ -56,8 +56,7 @@ GdkPixbuf *gdkPbTileDefault = NULL; GdkPixbuf *gdkPbIcon = NULL; WmdockPlugin *wmdock = NULL; gchar **rcCmds = NULL; -/* TODO: Set panel off to FALSE. */ -gboolean rcPanelOff = TRUE; +gboolean rcPanelOff = RCDEFAULT_PANELOFF; static void wmdock_orientation_changed (XfcePanelPlugin *plugin, GtkOrientation orientation, gpointer user_data) _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits