From 4c0fa2d381687105e3cb715d042950508d55dbb1 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 3 Sep 2012 08:30:39 +0000 Subject: [PATCH] big roundup commit fixing leaky submenus SVN revision: 75973 --- src/bin/e_gadcon.c | 3 +++ src/bin/e_int_border_menu.c | 8 ++++++++ src/bin/e_shelf.c | 1 + src/bin/e_toolbar.c | 1 + src/modules/conf/e_mod_main.c | 3 +++ src/modules/fileman/e_mod_main.c | 1 + src/modules/gadman/e_mod_gadman.c | 4 ++-- src/modules/ibar/e_mod_main.c | 2 ++ src/modules/illume-indicator/e_mod_ind_win.c | 1 + src/modules/syscon/e_mod_main.c | 1 + src/modules/tasks/e_mod_main.c | 1 + 11 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/bin/e_gadcon.c b/src/bin/e_gadcon.c index c8310636e..e50646b39 100644 --- a/src/bin/e_gadcon.c +++ b/src/bin/e_gadcon.c @@ -1560,6 +1560,7 @@ e_gadcon_client_add_location_menu(E_Gadcon_Client *gcc, E_Menu *menu) e_menu_item_label_set(mi, _("Move to")); e_util_menu_item_theme_icon_set(mi, "preferences-look"); e_menu_item_submenu_set(mi, mn); + e_object_unref(E_OBJECT(mn)); e_menu_pre_activate_callback_set(mn, _e_gadcon_gadget_move_to_pre_cb, gcc); } } @@ -1658,6 +1659,7 @@ e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu_gadget e_menu_item_label_set(mi, _("Look")); e_util_menu_item_theme_icon_set(mi, "preferences-look"); e_menu_item_submenu_set(mi, mo); + e_object_unref(E_OBJECT(mo)); } mi = e_menu_item_new(menu_gadget); @@ -1683,6 +1685,7 @@ e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu_gadget e_menu_item_label_set(mi, _(buf)); e_menu_item_realize_callback_set(mi, _e_gadcon_client_cb_menu_pre, gcc); e_menu_item_submenu_set(mi, menu_gadget); + e_object_unref(E_OBJECT(menu_gadget)); } if (gcc->gadcon->menu_attach.func) diff --git a/src/bin/e_int_border_menu.c b/src/bin/e_int_border_menu.c index 8b2d7fd22..e05726cb5 100644 --- a/src/bin/e_int_border_menu.c +++ b/src/bin/e_int_border_menu.c @@ -361,6 +361,7 @@ _e_border_menu_cb_maximize_pre(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi subm = e_menu_new(); e_object_data_set(E_OBJECT(subm), bd); e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); if ((!bd->lock_user_fullscreen) && (!bd->shaded)) { @@ -518,6 +519,7 @@ _e_border_menu_cb_application_pre(void *data, E_Menu *m __UNUSED__, E_Menu_Item subm = e_menu_new(); e_object_data_set(E_OBJECT(subm), bd); e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); if (bd->desktop) { @@ -569,6 +571,7 @@ _e_border_menu_cb_window_pre(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi) subm = e_menu_new(); e_object_data_set(E_OBJECT(subm), bd); e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); if ((bd->client.netwm.type == ECORE_X_WINDOW_TYPE_NORMAL) || (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_UNKNOWN)) @@ -870,6 +873,7 @@ _e_border_menu_cb_sendto_pre(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi) subm = e_menu_new(); e_object_data_set(E_OBJECT(subm), bd); e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); EINA_LIST_FOREACH(bd->zone->container->zones, l, zone) { @@ -948,6 +952,7 @@ _e_border_menu_cb_stacking_pre(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi subm = e_menu_new(); e_object_data_set(E_OBJECT(subm), bd); e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); /* Only allow to change layer for windows in "normal" layers */ e_menu_category_set(subm, "border/stacking"); @@ -1116,6 +1121,7 @@ _e_border_menu_cb_border_pre(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi) subm = e_menu_new(); e_object_data_set(E_OBJECT(subm), bd); e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); if (e_configure_registry_exists("internal/borders_border")) { @@ -1215,6 +1221,7 @@ _e_border_menu_cb_skip_pre(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi) subm = e_menu_new(); e_object_data_set(E_OBJECT(subm), bd); e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); submi = e_menu_item_new(subm); e_menu_item_label_set(submi, _("Window List")); @@ -1314,6 +1321,7 @@ _e_border_menu_cb_ibar_add_pre(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi } e_object_data_set(E_OBJECT(sm), bd); e_menu_item_submenu_set(mi, sm); + e_object_unref(E_OBJECT(sm)); } static void diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c index d1dbd7094..18d383ae9 100644 --- a/src/bin/e_shelf.c +++ b/src/bin/e_shelf.c @@ -1425,6 +1425,7 @@ _e_shelf_menu_append(E_Shelf *es, E_Menu *mn) e_object_free_attach_func_set(E_OBJECT(mi), _e_shelf_menu_item_free); e_object_data_set(E_OBJECT(mi), es); e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); mi = e_menu_item_new(mn); e_menu_item_separator_set(mi, 1); diff --git a/src/bin/e_toolbar.c b/src/bin/e_toolbar.c index 8f22eb0fa..719c22158 100644 --- a/src/bin/e_toolbar.c +++ b/src/bin/e_toolbar.c @@ -367,6 +367,7 @@ _e_toolbar_menu_append(E_Toolbar *tbar, E_Menu *mn) e_util_menu_item_theme_icon_set(mi, "preferences-toolbar"); e_menu_pre_activate_callback_set(subm, _e_toolbar_menu_cb_pre, tbar); e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); } static void diff --git a/src/modules/conf/e_mod_main.c b/src/modules/conf/e_mod_main.c index a0af6efbf..b3586a62e 100644 --- a/src/modules/conf/e_mod_main.c +++ b/src/modules/conf/e_mod_main.c @@ -231,6 +231,7 @@ _config_all_pre_activate_cb(void *data __UNUSED__, E_Menu *m) e_menu_item_callback_set(mi, _config_item_activate_cb, ecat); sub = e_menu_new(); e_menu_item_submenu_set(mi, sub); + e_object_unref(E_OBJECT(sub)); e_menu_pre_activate_callback_set(sub, _config_pre_activate_cb, ecat); } } @@ -250,6 +251,7 @@ e_mod_config_menu_add(void *data __UNUSED__, E_Menu *m) mi = e_menu_item_new(m); e_menu_item_label_set(mi, _("All")); e_menu_item_submenu_set(mi, sub); + e_object_unref(E_OBJECT(sub)); } /* module setup */ @@ -455,6 +457,7 @@ _e_mod_menu_add(void *data __UNUSED__, E_Menu *m) e_menu_item_label_set(mi, _("Modes")); e_util_menu_item_theme_icon_set(mi, "preferences-modes"); e_menu_item_submenu_set(mi, _e_mod_submenu_modes_get()); + e_object_unref(E_OBJECT(mi->submenu)); } static void diff --git a/src/modules/fileman/e_mod_main.c b/src/modules/fileman/e_mod_main.c index de7ae54a5..068f4eacc 100644 --- a/src/modules/fileman/e_mod_main.c +++ b/src/modules/fileman/e_mod_main.c @@ -512,6 +512,7 @@ _e_mod_menu_populate(void *d, E_Menu *m __UNUSED__, E_Menu_Item *mi) e_object_data_set(E_OBJECT(subm), d); e_object_free_attach_func_set(E_OBJECT(subm), _e_mod_menu_cleanup_cb); e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); e_menu_freeze(subm); } dev = d; diff --git a/src/modules/gadman/e_mod_gadman.c b/src/modules/gadman/e_mod_gadman.c index 62270e857..edb239f25 100644 --- a/src/modules/gadman/e_mod_gadman.c +++ b/src/modules/gadman/e_mod_gadman.c @@ -894,7 +894,7 @@ _attach_menu(void *data __UNUSED__, E_Gadcon_Client *gcc, E_Menu *menu) e_menu_item_label_set(mi, _("Appearance")); e_util_menu_item_theme_icon_set(mi, "preferences-look"); e_menu_item_submenu_set(mi, mn); - e_object_del(E_OBJECT(mn)); + e_object_unref(E_OBJECT(mn)); /* bg / ontop */ mn = e_menu_new(); @@ -922,7 +922,7 @@ _attach_menu(void *data __UNUSED__, E_Gadcon_Client *gcc, E_Menu *menu) e_menu_item_label_set(mi, _("Behavior")); e_util_menu_item_theme_icon_set(mi, "preferences-look"); e_menu_item_submenu_set(mi, mn); - e_object_del(E_OBJECT(mn)); + e_object_unref(E_OBJECT(mn)); mi = e_menu_item_new(menu); e_menu_item_separator_set(mi, 1); diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c index a17077e93..391ee4257 100644 --- a/src/modules/ibar/e_mod_main.c +++ b/src/modules/ibar/e_mod_main.c @@ -879,6 +879,8 @@ _ibar_cb_icon_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUS e_util_icon_size_normalize(24 * e_scale), mi); e_menu_item_submenu_set(mi, mo); + e_object_unref(E_OBJECT(mo)); + e_gadcon_client_menu_set(ic->ibar->inst->gcc, m); e_gadcon_canvas_zone_geometry_get(ic->ibar->inst->gcc->gadcon, &cx, &cy, NULL, NULL); diff --git a/src/modules/illume-indicator/e_mod_ind_win.c b/src/modules/illume-indicator/e_mod_ind_win.c index d1a2850ac..5cde04e4f 100644 --- a/src/modules/illume-indicator/e_mod_ind_win.c +++ b/src/modules/illume-indicator/e_mod_ind_win.c @@ -476,6 +476,7 @@ _e_mod_ind_win_cb_menu_append(Ind_Win *iwin, E_Menu *mn) e_menu_item_icon_edje_set(mi, buff, "icon"); e_menu_pre_activate_callback_set(subm, _e_mod_ind_win_cb_menu_pre, iwin); e_menu_item_submenu_set(mi, subm); + e_object_unref(E_OBJECT(subm)); } static void diff --git a/src/modules/syscon/e_mod_main.c b/src/modules/syscon/e_mod_main.c index 440811ff6..48390a938 100644 --- a/src/modules/syscon/e_mod_main.c +++ b/src/modules/syscon/e_mod_main.c @@ -131,6 +131,7 @@ _e_mod_menu_add(void *data __UNUSED__, E_Menu *m) e_menu_item_callback_set(mi, _e_mod_syscon_cb, NULL); sub = e_menu_new(); e_menu_item_submenu_set(mi, sub); + e_object_unref(E_OBJECT(sub)); e_menu_pre_activate_callback_set(sub, _e_mod_menu_generate, NULL); } diff --git a/src/modules/tasks/e_mod_main.c b/src/modules/tasks/e_mod_main.c index 670c184ae..5bfbd4bbc 100644 --- a/src/modules/tasks/e_mod_main.c +++ b/src/modules/tasks/e_mod_main.c @@ -708,6 +708,7 @@ _tasks_cb_item_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNU mi = e_menu_item_new(item->border->border_menu); e_menu_item_label_set(mi, _("Tasks")); e_menu_item_submenu_set(mi, m); + e_object_unref(E_OBJECT(m)); e_util_menu_item_theme_icon_set(mi, "preferences-system"); e_gadcon_client_menu_set(item->tasks->gcc, item->border->border_menu);