[Xfce4-commits] <xfce4-panel:devel> Don't crash if skip-tasklist state changes.

Nick Schermer noreply at xfce.org
Tue Feb 16 12:14:02 CET 2010


Updating branch refs/heads/devel
         to 33950b35eca1a5b06273c790e75612b7289f9a21 (commit)
       from 2e277479f420f2e9c4177c19dc5682dfdc8c58a6 (commit)

commit 33950b35eca1a5b06273c790e75612b7289f9a21
Author: Nick Schermer <nick at xfce.org>
Date:   Tue Feb 16 12:11:44 2010 +0100

    Don't crash if skip-tasklist state changes.
    
    We destroy the child, so avoid using invalid memory and
    hold the pointer to the tasklist.

 plugins/tasklist/tasklist-widget.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/plugins/tasklist/tasklist-widget.c b/plugins/tasklist/tasklist-widget.c
index 88782d4..ce82364 100644
--- a/plugins/tasklist/tasklist-widget.c
+++ b/plugins/tasklist/tasklist-widget.c
@@ -1768,8 +1768,9 @@ xfce_tasklist_button_state_changed (WnckWindow        *window,
                                     WnckWindowState    new_state,
                                     XfceTasklistChild *child)
 {
-  gboolean    blink;
-  WnckScreen *screen;
+  gboolean      blink;
+  WnckScreen   *screen;
+  XfceTasklist *tasklist;
 
   panel_return_if_fail (WNCK_IS_WINDOW (window));
   panel_return_if_fail (child->window == window);
@@ -1779,8 +1780,13 @@ xfce_tasklist_button_state_changed (WnckWindow        *window,
   if (PANEL_HAS_FLAG (changed_state, WNCK_WINDOW_STATE_SKIP_TASKLIST))
     {
       screen = wnck_window_get_screen (window);
+      tasklist = child->tasklist;
+
+      /* remove button from tasklist */
       xfce_tasklist_window_removed (screen, window, child->tasklist);
-      xfce_tasklist_window_added (screen, window, child->tasklist);
+
+      /* add the window to the skipped_windows list */
+      xfce_tasklist_window_added (screen, window, tasklist);
 
       return;
     }



More information about the Xfce4-commits mailing list