Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_about.c e_border.c e_border.h e_configure.c e_dialog.c 
        e_int_border_menu.c e_int_menus.c e_manager.c e_pointer.c 
        e_theme_about.c e_win.c e_win.h 


Log Message:


fix several bugs (cursors for example)... found some more... :)

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_about.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- e_about.c   24 Sep 2005 09:16:22 -0000      1.10
+++ e_about.c   6 Jan 2006 13:56:45 -0000       1.11
@@ -37,6 +37,7 @@
      }
    e_win_delete_callback_set(about->win, _e_about_cb_delete);
    about->win->data = about;
+   e_win_dialog_set(about->win, 1);
    e_win_name_class_set(about->win, "E", "_about");
    e_win_title_set(about->win, _("About Enlightenment"));
    
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.472
retrieving revision 1.473
diff -u -3 -r1.472 -r1.473
--- e_border.c  29 Dec 2005 14:23:18 -0000      1.472
+++ e_border.c  6 Jan 2006 13:56:45 -0000       1.473
@@ -4759,42 +4759,6 @@
          }
        bd->client.icccm.fetch.protocol = 0;
      }
-   if (bd->client.mwm.fetch.hints)
-     {
-       int pb;
-
-       bd->client.mwm.exists =
-         ecore_x_mwm_hints_get(bd->client.win,
-                               &bd->client.mwm.func,
-                               &bd->client.mwm.decor,
-                               &bd->client.mwm.input);
-       pb = bd->client.mwm.borderless;
-       bd->client.mwm.borderless = 0;
-       if (bd->client.mwm.exists)
-         {
-//          printf("##- MWM HINTS SET 0x%x!\n", bd->client.win);
-            if ((!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_ALL)) &&
-                (!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_TITLE)) &&
-                (!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_BORDER)))
-              bd->client.mwm.borderless = 1;
-         }
-       if (bd->client.mwm.borderless != pb)
-         {
-            if (((!bd->lock_border) || (!bd->client.border.name))
-                && (!bd->shaded))
-              {
-                 if (bd->client.border.name) 
evas_stringshare_del(bd->client.border.name);
-                 if (bd->client.mwm.borderless)
-                   bd->client.border.name = evas_stringshare_add("borderless");
-                 else
-                   bd->client.border.name = evas_stringshare_add("default");
-//          if (bd->client.mwm.borderless)
-//            printf("client %s borderless\n", bd->client.icccm.title);
-                 bd->client.border.changed = 1;
-              }
-         }
-       bd->client.mwm.fetch.hints = 0;
-     }
    if (bd->client.icccm.fetch.transient_for)
      {
        bd->client.icccm.transient_for = 
ecore_x_icccm_transient_for_get(bd->client.win);
@@ -4810,12 +4774,6 @@
        bd->client.icccm.window_role = 
ecore_x_icccm_window_role_get(bd->client.win);
        bd->client.icccm.fetch.window_role = 0;
      }
-   if (bd->client.netwm.update.state)
-     {
-       e_hints_window_state_set(bd);
-       bd->client.netwm.update.state = 0;
-     }
-
    if (bd->changes.shape)
      {
        Ecore_X_Rectangle *rects;
@@ -4858,6 +4816,46 @@
          bd->client.shaped = 0;
        bd->need_shape_merge = 1;
      }
+   if (bd->client.mwm.fetch.hints)
+     {
+       int pb;
+
+       bd->client.mwm.exists =
+         ecore_x_mwm_hints_get(bd->client.win,
+                               &bd->client.mwm.func,
+                               &bd->client.mwm.decor,
+                               &bd->client.mwm.input);
+       pb = bd->client.mwm.borderless;
+       bd->client.mwm.borderless = 0;
+       if (bd->client.mwm.exists)
+         {
+//          printf("##- MWM HINTS SET 0x%x!\n", bd->client.win);
+            if ((!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_ALL)) &&
+                (!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_TITLE)) &&
+                (!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_BORDER)))
+              bd->client.mwm.borderless = 1;
+         }
+       if (bd->client.mwm.borderless != pb)
+         {
+            if (((!bd->lock_border) || (!bd->client.border.name))
+                && (!bd->shaded))
+              {
+                 if (bd->client.border.name)
+                   evas_stringshare_del(bd->client.border.name);
+                 if (bd->client.mwm.borderless)
+                   bd->client.border.name = evas_stringshare_add("borderless");
+                 else
+                   bd->client.border.name = evas_stringshare_add("default");
+                 bd->client.border.changed = 1;
+              }
+         }
+       bd->client.mwm.fetch.hints = 0;
+     }
+   if (bd->client.netwm.update.state)
+     {
+       e_hints_window_state_set(bd);
+       bd->client.netwm.update.state = 0;
+     }
 
    if (bd->new_client)
      {
@@ -4870,6 +4868,40 @@
 //     e_object_breadcrumb_add(E_OBJECT(bd), "border_add_event");
        ecore_event_add(E_EVENT_BORDER_ADD, ev, 
_e_border_event_border_add_free, NULL);
 
+       if (((!bd->lock_border) || (!bd->client.border.name))
+           && (!bd->shaded))
+         {
+            if (bd->client.border.name)
+              evas_stringshare_del(bd->client.border.name);
+            if (bd->client.mwm.borderless)
+              bd->client.border.name = evas_stringshare_add("borderless");
+            else if (((bd->client.icccm.transient_for != 0) ||
+                      (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG)) &&
+                     (bd->client.icccm.min_w == bd->client.icccm.max_w) &&
+                     (bd->client.icccm.min_h == bd->client.icccm.max_h))
+              bd->client.border.name = evas_stringshare_add("noresize_dialog");
+            else if ((bd->client.icccm.min_w == bd->client.icccm.max_w) &&
+                     (bd->client.icccm.min_h == bd->client.icccm.max_h))
+              bd->client.border.name = evas_stringshare_add("noresize");
+            else if (bd->client.shaped)
+              bd->client.border.name = evas_stringshare_add("shaped");
+            else if ((!bd->client.icccm.accepts_focus) &&
+                     (!bd->client.icccm.take_focus))
+              bd->client.border.name = evas_stringshare_add("nofocus");
+            else if (bd->client.icccm.urgent)
+              bd->client.border.name = evas_stringshare_add("urgent");
+            else if ((bd->client.icccm.transient_for != 0) ||
+                     (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG))
+              bd->client.border.name = evas_stringshare_add("dialog");
+            else if (bd->client.netwm.state.modal)
+              bd->client.border.name = evas_stringshare_add("modal");
+            else if ((bd->client.netwm.state.skip_taskbar) ||
+                     (bd->client.netwm.state.skip_pager))
+              bd->client.border.name = evas_stringshare_add("skipped");
+            else
+              bd->client.border.name = evas_stringshare_add("default");
+            bd->client.border.changed = 1;
+         }
        if (!bd->remember)
          {
             rem = e_remember_find(bd);
@@ -5704,7 +5736,8 @@
 
        if ((!bd->placed) && (!bd->re_manage) &&
            (e_config->window_placement_policy == E_WINDOW_PLACEMENT_MANUAL) &&
-           (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DIALOG) &&
+           (!((bd->client.icccm.transient_for != 0) ||
+              (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG))) &&
            (!move) && (!resize))
          {
             /* Set this window into moving state */
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.127
retrieving revision 1.128
diff -u -3 -r1.127 -r1.128
--- e_border.h  29 Dec 2005 14:23:18 -0000      1.127
+++ e_border.h  6 Jan 2006 13:56:45 -0000       1.128
@@ -203,18 +203,18 @@
         int num_icons;
         unsigned int user_time;
         struct {
-             int left;
-             int right;
-             int top;
-             int bottom;
-             int left_start_y;
-             int left_end_y;
-             int right_start_y;
-             int right_end_y;
-             int top_start_x;
-             int top_end_x;
-             int bottom_start_x;
-             int bottom_end_x;
+           int left;
+           int right;
+           int top;
+           int bottom;
+           int left_start_y;
+           int left_end_y;
+           int right_start_y;
+           int right_end_y;
+           int top_start_x;
+           int top_end_x;
+           int bottom_start_x;
+           int bottom_end_x;
         } strut;
         unsigned char ping : 1;
         struct {
@@ -260,7 +260,7 @@
         } fetch;
 
         struct {
-             unsigned char state : 1;
+           unsigned char state : 1;
         } update;
       } netwm;
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_configure.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- e_configure.c       4 Jan 2006 22:20:51 -0000       1.27
+++ e_configure.c       6 Jan 2006 13:56:45 -0000       1.28
@@ -44,6 +44,7 @@
    
    e_win_title_set(eco->win, _("Enlightenment Configuration"));
    e_win_name_class_set(eco->win, "E", "_configure");
+   e_win_dialog_set(eco->win, 1);
    eco->evas = e_win_evas_get(eco->win);
    e_win_delete_callback_set(eco->win, _e_configure_cb_del_req);
    e_win_resize_callback_set(eco->win, _e_configure_cb_resize);   
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_dialog.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -3 -r1.31 -r1.32
--- e_dialog.c  11 Dec 2005 03:03:53 -0000      1.31
+++ e_dialog.c  6 Jan 2006 13:56:45 -0000       1.32
@@ -39,10 +39,10 @@
        free(dia);
        return NULL;
      }
-   ecore_x_netwm_window_type_set(dia->win->evas_win, 
ECORE_X_WINDOW_TYPE_DIALOG);
    e_win_delete_callback_set(dia->win, _e_dialog_cb_delete);
    e_win_resize_callback_set(dia->win, _e_dialog_cb_resize);
    dia->win->data = dia;
+   e_win_dialog_set(dia->win, 1);
    e_win_name_class_set(dia->win, "E", "_dialog");
    o = edje_object_add(e_win_evas_get(dia->win));
    dia->bg_object = o;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_border_menu.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- e_int_border_menu.c 4 Dec 2005 12:03:58 -0000       1.9
+++ e_int_border_menu.c 6 Jan 2006 13:56:46 -0000       1.10
@@ -168,13 +168,18 @@
                                                           
"widgets/border/default/stacking"),
                             "widgets/border/default/stacking");
    
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("Maximize"));
-   e_menu_item_submenu_set(mi, bd->border_maximize_menu);
-   e_menu_item_icon_edje_set(mi,
-                            (char *)e_theme_edje_file_get("base/theme/borders",
-                                                          
"widgets/border/default/maximize"),
-                            "widgets/border/default/maximize");
+   if (!(((bd->client.icccm.min_w == bd->client.icccm.max_w) &&
+         (bd->client.icccm.min_h == bd->client.icccm.max_h)) ||
+        (bd->lock_user_maximize)))
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Maximize"));
+       e_menu_item_submenu_set(mi, bd->border_maximize_menu);
+       e_menu_item_icon_edje_set(mi,
+                                 (char 
*)e_theme_edje_file_get("base/theme/borders",
+                                                               
"widgets/border/default/maximize"),
+                                 "widgets/border/default/maximize");
+     }
 
    if ((!bd->lock_user_shade) && (!(!strcmp("borderless", 
bd->client.border.name))))
      {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -3 -r1.121 -r1.122
--- e_int_menus.c       2 Jan 2006 10:52:44 -0000       1.121
+++ e_int_menus.c       6 Jan 2006 13:56:46 -0000       1.122
@@ -42,10 +42,6 @@
 static void _e_int_menus_clients_cleanup_cb  (void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_desktops_pre_cb     (void *data, E_Menu *m);
 static void _e_int_menus_desktops_item_cb    (void *data, E_Menu *m, 
E_Menu_Item *mi);
-static void _e_int_menus_desktops_row_add_cb (void *data, E_Menu *m, 
E_Menu_Item *mi);
-static void _e_int_menus_desktops_row_del_cb (void *data, E_Menu *m, 
E_Menu_Item *mi);
-static void _e_int_menus_desktops_col_add_cb (void *data, E_Menu *m, 
E_Menu_Item *mi);
-static void _e_int_menus_desktops_col_del_cb (void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_gadgets_pre_cb      (void *data, E_Menu *m);
 static void _e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_themes_pre_cb       (void *data, E_Menu *m);
@@ -523,8 +519,6 @@
 
    e_menu_pre_activate_callback_set(m, NULL, NULL);
    root = e_menu_root_get(m);
-   /* Get the desktop list for this zone */
-   /* FIXME: Menu code needs to determine what zone menu was clicked in */
    if ((root) && (root->zone))
      {
        int i;
@@ -544,66 +538,6 @@
             e_menu_item_callback_set(mi, _e_int_menus_desktops_item_cb, desk);
          }
      }
-
-   mi = e_menu_item_new(m);
-   e_menu_item_separator_set(mi, 1);
-
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("New Row of Desktops"));
-   e_menu_item_callback_set(mi, _e_int_menus_desktops_row_add_cb, NULL);
-              
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("Remove Row of Desktops"));
-   e_menu_item_callback_set(mi, _e_int_menus_desktops_row_del_cb, NULL);
-
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("New Column of Desktops"));
-   e_menu_item_callback_set(mi, _e_int_menus_desktops_col_add_cb, NULL);
-              
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("Remove Column of Desktops"));
-   e_menu_item_callback_set(mi, _e_int_menus_desktops_col_del_cb, NULL);
-}
-
-/* FIXME: Use the zone the menu was clicked in */
-static void
-_e_int_menus_desktops_row_add_cb(void *data, E_Menu *m, E_Menu_Item *mi)
-{
-   E_Menu *root;
-     
-   root = e_menu_root_get(m);
-   if (root)
-     e_desk_row_add(root->zone);
-}
-
-static void
-_e_int_menus_desktops_row_del_cb(void *data, E_Menu *m, E_Menu_Item *mi)
-{
-   E_Menu *root;
-     
-   root = e_menu_root_get(m);
-   if (root)
-     e_desk_row_remove(root->zone);
-}
-
-static void
-_e_int_menus_desktops_col_add_cb(void *data, E_Menu *m, E_Menu_Item *mi)
-{
-   E_Menu *root;
-     
-   root = e_menu_root_get(m);
-   if (root)
-     e_desk_col_add(root->zone);
-}
-
-static void
-_e_int_menus_desktops_col_del_cb(void *data, E_Menu *m, E_Menu_Item *mi)
-{
-   E_Menu *root;
-     
-   root = e_menu_root_get(m);
-   if (root)
-     e_desk_col_remove(root->zone);
 }
 
 static void
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_manager.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -3 -r1.45 -r1.46
--- e_manager.c 28 Sep 2005 13:30:49 -0000      1.45
+++ e_manager.c 6 Jan 2006 13:56:46 -0000       1.46
@@ -8,6 +8,7 @@
 
 static int _e_manager_cb_window_show_request(void *data, int ev_type, void 
*ev);
 static int _e_manager_cb_window_configure(void *data, int ev_type, void *ev);
+static int _e_manager_cb_key_up(void *data, int ev_type, void *ev);
 static int _e_manager_cb_key_down(void *data, int ev_type, void *ev);
 static int _e_manager_cb_frame_extents_request(void *data, int ev_type, void 
*ev);
 static int _e_manager_cb_ping(void *data, int ev_type, void *ev);
@@ -115,6 +116,8 @@
    if (h) man->handlers = evas_list_append(man->handlers, h);
    h = ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, _e_manager_cb_key_down, 
man);
    if (h) man->handlers = evas_list_append(man->handlers, h);
+   h = ecore_event_handler_add(ECORE_X_EVENT_KEY_UP, _e_manager_cb_key_up, 
man);
+   if (h) man->handlers = evas_list_append(man->handlers, h);
    h = ecore_event_handler_add(ECORE_X_EVENT_FRAME_EXTENTS_REQUEST, 
_e_manager_cb_frame_extents_request, man);
    h = ecore_event_handler_add(ECORE_X_EVENT_PING, _e_manager_cb_ping, man);
    if (h) man->handlers = evas_list_append(man->handlers, h);
@@ -502,7 +505,7 @@
    
    man = data;
    e = ev;
-//   printf("KEY %s [win=%x event_win=%x]\n", e->keyname, e->win, 
e->event_win);
+//   printf("KD %s [win=%x event_win=%x]\n", e->keyname, e->win, e->event_win);
    if (e->event_win != man->root) return 1;
    if (e_bindings_key_down_event_handle(E_BINDING_CONTEXT_MANAGER, 
E_OBJECT(man), ev))
      return 0;
@@ -510,6 +513,18 @@
 }
 
 static int
+_e_manager_cb_key_up(void *data, int ev_type __UNUSED__, void *ev)
+{
+   E_Manager *man;
+   Ecore_X_Event_Key_Up *e;
+   
+   man = data;
+   e = ev;
+//   printf("KU %s [win=%x event_win=%x]\n", e->keyname, e->win, e->event_win);
+   return 1;
+}
+
+static int
 _e_manager_cb_frame_extents_request(void *data, int ev_type __UNUSED__, void 
*ev)
 {
    E_Manager *man;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_pointer.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- e_pointer.c 4 Dec 2005 12:03:58 -0000       1.21
+++ e_pointer.c 6 Jan 2006 13:56:46 -0000       1.22
@@ -103,19 +103,16 @@
 
        /* Init the cursor object */
        if (ecore_x_cursor_color_supported_get())
-         {
-            p->color = 1;
-         }
+         p->color = 1;
        else
-         {
-            p->color = 0;
-         }
+         p->color = 0;
 
        /* init edje */
        evas_object_move(p->pointer_object, 0, 0);
        evas_object_resize(p->pointer_object, p->w, p->h);
        evas_object_show(p->pointer_object);
 
+       ecore_x_cursor_size_set(e_config->cursor_size * 3 / 4);
        e_pointer_type_push(p, p, "default");
 
        _e_pointers = evas_list_append(_e_pointers, p);
@@ -183,14 +180,12 @@
 {
    E_Pointer_Stack *stack;
 
+   p->e_cursor = e_config->use_e_cursor;
    if (!_e_pointer_type_set(p, type))
      {
-       p->e_cursor = !p->e_cursor;
+       p->e_cursor = 0;
        if (!_e_pointer_type_set(p, type))
-         {
-            printf("BUG: Can't set cursor!\n");
-            return;
-         }
+         return;
      }
 
    if (p->type) evas_stringshare_del(p->type);
@@ -205,9 +200,6 @@
        stack->e_cursor = p->e_cursor;
        p->stack = evas_list_prepend(p->stack, stack);
      }
-
-   /* try the default cursor next time */
-   p->e_cursor = e_config->use_e_cursor;
 }
 
 void
@@ -345,35 +337,28 @@
    if (p->e_cursor)
      {
        Evas_Object *o;
-       char         cursor[1024];
+       char cursor[1024];
 
        o = p->pointer_object;
        if (p->color)
          {
             snprintf(cursor, sizeof(cursor), "pointer/enlightenment/%s/color", 
type);
-            if (!e_theme_edje_object_set(o,
-                                         "base/theme/pointer",
-                                         cursor))
-              {
-                 return 0;
-              }
+            if (!e_theme_edje_object_set(o, "base/theme/pointer", cursor))
+              return 0;
          }
        else
          {
             snprintf(cursor, sizeof(cursor), "pointer/enlightenment/%s/mono", 
type);
-            if (!e_theme_edje_object_set(o,
-                                         "base/theme/pointer",
-                                         cursor))
-              {
-                 return 0;
-              }
+            if (!e_theme_edje_object_set(o, "base/theme/pointer", cursor))
+              return 0;
          }
        edje_object_part_swallow(p->pointer_object, "hotspot", p->hot_object);
        p->hot.update = 1;
      }
    else
      {
-       Ecore_X_Cursor cursor;
+       Ecore_X_Cursor cursor = 0;
+       
        if (!strcmp(type, "move"))
          {
             cursor = ecore_x_cursor_shape_get(ECORE_X_CURSOR_FLEUR);
@@ -449,6 +434,7 @@
             if (!cursor) printf("X Cursor for default is missing\n");
             ecore_x_window_cursor_set(p->win, cursor);
          }
+       if (cursor) ecore_x_cursor_free(cursor);
      }
    return 1;
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_theme_about.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_theme_about.c     29 Sep 2005 08:23:11 -0000      1.2
+++ e_theme_about.c     6 Jan 2006 13:56:46 -0000       1.3
@@ -37,6 +37,7 @@
      }
    e_win_delete_callback_set(about->win, _e_theme_about_cb_delete);
    about->win->data = about;
+   e_win_dialog_set(about->win, 1);
    e_win_name_class_set(about->win, "E", "_theme_about");
    e_win_title_set(about->win, _("About This Theme"));
    
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_win.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- e_win.c     7 Nov 2005 15:31:08 -0000       1.14
+++ e_win.c     6 Jan 2006 13:56:46 -0000       1.15
@@ -104,6 +104,7 @@
             ecore_evas_software_x11_extra_event_window_add(win->ecore_evas, 
win->border->event_win);
          }
      }
+   _e_win_prop_update(win);
    e_border_show(win->border);
    ecore_evas_show(win->ecore_evas);
 }
@@ -341,6 +342,23 @@
      }
 }
 
+void
+e_win_dialog_set(E_Win *win, int dialog)
+{
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
+   if ((win->state.dialog) && (!dialog))
+     {
+       win->state.dialog = 0;
+       _e_win_prop_update(win);
+     }
+   else if ((!win->state.dialog) && (dialog))
+     {
+       win->state.dialog = 1;
+       _e_win_prop_update(win);
+     }
+}
+
 /* local subsystem functions */
 static void
 _e_win_free(E_Win *win)
@@ -375,6 +393,16 @@
                                    win->base_w, win->base_h,
                                    win->step_x, win->step_y,
                                    win->min_aspect, win->max_aspect);
+   if (win->state.dialog)
+     {
+       ecore_x_icccm_transient_for_set(win->evas_win, 
win->container->manager->root);
+       ecore_x_netwm_window_type_set(win->evas_win, 
ECORE_X_WINDOW_TYPE_DIALOG);
+     }
+   else
+     {
+       ecore_x_icccm_transient_for_unset(win->evas_win);
+       ecore_x_netwm_window_type_set(win->evas_win, 
ECORE_X_WINDOW_TYPE_NORMAL);
+     }
 }
 
 static void
@@ -387,13 +415,9 @@
      state[num++] = E_ATOM_WINDOW_STATE_CENTERED;
 
    if (num)
-     {
-       ecore_x_window_prop_card32_set(win->evas_win, E_ATOM_WINDOW_STATE, 
state, num);
-     }
+     ecore_x_window_prop_card32_set(win->evas_win, E_ATOM_WINDOW_STATE, state, 
num);
    else
-     {
-       ecore_x_window_prop_property_del(win->evas_win, E_ATOM_WINDOW_STATE);
-     }
+     ecore_x_window_prop_property_del(win->evas_win, E_ATOM_WINDOW_STATE);
 }
 
 static void
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_win.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_win.h     4 Nov 2005 23:59:53 -0000       1.4
+++ e_win.h     6 Jan 2006 13:56:46 -0000       1.5
@@ -33,7 +33,8 @@
    void                *data;
 
    struct {
-       unsigned char   centered : 1;
+      unsigned char   centered : 1;
+      unsigned char   dialog : 1;
    } state;
 };
 
@@ -65,6 +66,7 @@
 EAPI void   e_win_title_set          (E_Win *win, char *title);
 
 EAPI void   e_win_centered_set       (E_Win *win, int centered);
+EAPI void   e_win_dialog_set         (E_Win *win, int dialog);
 
 #endif
 #endif




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to