e - shelf menu - handle deletion properly if cb is not for shelf menu
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Tue, 9 Jun 2015 05:29:25 +0000 (14:29 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Tue, 9 Jun 2015 05:29:25 +0000 (14:29 +0900)
it seems that some changes now make the shel menu post callback be
called for older menus not part of the shelf and thus shelf menu
stored != menu the cb is for - thus resulting in deletion of the wrong
menu

src/bin/e_shelf.c

index ee87d0b..d138778 100644 (file)
@@ -1614,13 +1614,13 @@ _e_shelf_cb_menu_delete(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_
 }
 
 static void
-_e_shelf_cb_menu_post(void *data, E_Menu *m EINA_UNUSED)
+_e_shelf_cb_menu_post(void *data, E_Menu *m)
 {
    E_Shelf *es;
 
    es = data;
-   if (!es->menu) return;
-   e_object_del(E_OBJECT(es->menu));
+   e_object_del(E_OBJECT(m));
+   if (m != es->menu) return;
    es->menu = NULL;
 }