Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_border.h Log Message: and attch border menus to the border - so if the border is freed.. the menu attached is too! =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.62 retrieving revision 1.63 diff -u -3 -r1.62 -r1.63 --- e_border.c 11 Jan 2005 13:43:00 -0000 1.62 +++ e_border.c 12 Jan 2005 09:35:07 -0000 1.63 @@ -62,6 +62,8 @@ static void _e_border_resize_handle(E_Border *bd); static int _e_border_shade_animator(void *data); + +static void _e_border_cb_border_menu_end(void *data, E_Menu *m); static void _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y); static void _e_border_menu_cb_close(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_iconify(void *data, E_Menu *m, E_Menu_Item *mi); @@ -807,6 +809,11 @@ static void _e_border_free(E_Border *bd) { + if (bd->border_menu) + { + e_object_del(E_OBJECT(bd->border_menu)); + bd->border_menu = NULL; + } if (focused == bd) focused = NULL; while (bd->handlers) { @@ -1460,6 +1467,7 @@ else if (!strcmp(source, "menu")) { Evas_Coord x, y; + evas_pointer_canvas_xy_get(bd->bg_evas , &x, &y); _e_border_menu_show(bd, x + bd->x, y + bd->y); } @@ -2577,7 +2585,15 @@ return 1; } -E_Menu *_e_border_menu; +static void +_e_border_cb_border_menu_end(void *data, E_Menu *m) +{ + E_Border *bd; + + bd = e_object_data_get(E_OBJECT(m)); + if (bd) bd->border_menu = NULL; + e_object_del(E_OBJECT(m)); +} static void _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y) @@ -2586,16 +2602,12 @@ E_Menu_Item *mi; E_App *a; - if (e_menu_grab_window_get()) return; - if (!_e_border_menu) - _e_border_menu = e_menu_new(); - else - { - e_object_unref(E_OBJECT(_e_border_menu)); - _e_border_menu = e_menu_new(); - } + if (bd->border_menu) return; - m = _e_border_menu; + m = e_menu_new(); + e_object_data_set(E_OBJECT(m), bd); + bd->border_menu = E_OBJECT(m); + e_menu_post_deactivate_callback_set(m, _e_border_cb_border_menu_end, NULL); mi = e_menu_item_new(m); e_menu_item_label_set(mi, "Close"); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v retrieving revision 1.20 retrieving revision 1.21 diff -u -3 -r1.20 -r1.21 --- e_border.h 11 Jan 2005 13:11:12 -0000 1.20 +++ e_border.h 12 Jan 2005 09:35:07 -0000 1.21 @@ -169,6 +169,7 @@ } shade; Evas_List *stick_desks; + E_Object *border_menu; struct { unsigned int visible : 1; ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs