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

Reply via email to