Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_actions.c e_border.c e_border.h e_focus.c e_hints.c 
        e_int_menus.c e_winlist.c 


Log Message:


implement most of the locks

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_actions.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- e_actions.c 2 Jul 2005 13:33:52 -0000       1.16
+++ e_actions.c 4 Jul 2005 10:24:22 -0000       1.17
@@ -58,14 +58,16 @@
    if (!obj) obj = E_OBJECT(e_border_focused_get());
    if (!obj) return;
    if (obj->type != E_BORDER_TYPE) return;
-   e_border_act_move_begin((E_Border *)obj, NULL);
+   if (!((E_Border *)obj)->lock_user_location)
+     e_border_act_move_begin((E_Border *)obj, NULL);
 }
 ACT_FN_GO_MOUSE(window_move)
 {
    if (!obj) obj = E_OBJECT(e_border_focused_get());
    if (!obj) return;
    if (obj->type != E_BORDER_TYPE) return;
-   e_border_act_move_begin((E_Border *)obj, ev);
+   if (!((E_Border *)obj)->lock_user_location)
+     e_border_act_move_begin((E_Border *)obj, ev);
 }
 ACT_FN_END(window_move)
 {
@@ -88,14 +90,16 @@
    if (!obj) obj = E_OBJECT(e_border_focused_get());
    if (!obj) return;
    if (obj->type != E_BORDER_TYPE) return;
-   e_border_act_resize_begin((E_Border *)obj, NULL);
+   if (!((E_Border *)obj)->lock_user_size)
+     e_border_act_resize_begin((E_Border *)obj, NULL);
 }
 ACT_FN_GO_MOUSE(window_resize)
 {
    if (!obj) obj = E_OBJECT(e_border_focused_get());
    if (!obj) return;
    if (obj->type != E_BORDER_TYPE) return;
-   e_border_act_resize_begin((E_Border *)obj, ev);
+   if (!((E_Border *)obj)->lock_user_size)
+     e_border_act_resize_begin((E_Border *)obj, ev);
 }
 ACT_FN_END(window_resize)
 {
@@ -157,7 +161,8 @@
        obj = E_OBJECT(e_border_focused_get());
        if (!obj) return;
      }
-   e_border_raise((E_Border *)obj);
+   if (!((E_Border *)obj)->lock_user_stacking)
+     e_border_raise((E_Border *)obj);
 }
 
 /***************************************************************************/
@@ -170,7 +175,8 @@
        obj = E_OBJECT(e_border_focused_get());
        if (!obj) return;
      }
-   e_border_lower((E_Border *)obj);
+   if (!((E_Border *)obj)->lock_user_stacking)
+     e_border_lower((E_Border *)obj);
 }
 
 /***************************************************************************/
@@ -183,7 +189,8 @@
        obj = E_OBJECT(e_border_focused_get());
        if (!obj) return;
      }
-   e_border_act_close_begin((E_Border *)obj);
+   if (!((E_Border *)obj)->lock_close)
+     e_border_act_close_begin((E_Border *)obj);
 }
 
 /***************************************************************************/
@@ -196,7 +203,8 @@
        obj = E_OBJECT(e_border_focused_get());
        if (!obj) return;
      }
-   e_border_act_kill_begin((E_Border *)obj);
+   if (!((E_Border *)obj)->lock_close)
+     e_border_act_kill_begin((E_Border *)obj);
 }
 
 /***************************************************************************/
@@ -209,6 +217,7 @@
        obj = E_OBJECT(e_border_focused_get());
        if (!obj) return;
      }
+   if (!((E_Border *)obj)->lock_user_sticky)
      {
        E_Border *bd;
        
@@ -228,6 +237,7 @@
        obj = E_OBJECT(e_border_focused_get());
        if (!obj) return;
      }
+   if (!((E_Border *)obj)->lock_user_iconify)
      {
        E_Border *bd;
        
@@ -247,6 +257,7 @@
        obj = E_OBJECT(e_border_focused_get());
        if (!obj) return;
      }
+   if (!((E_Border *)obj)->lock_user_maximize)
      {
        E_Border *bd;
        
@@ -266,6 +277,7 @@
        obj = E_OBJECT(e_border_focused_get());
        if (!obj) return;
      }
+   if (!((E_Border *)obj)->lock_user_shade)
      {
        E_Border *bd;
        
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.310
retrieving revision 1.311
diff -u -3 -r1.310 -r1.311
--- e_border.c  4 Jul 2005 08:19:44 -0000       1.310
+++ e_border.c  4 Jul 2005 10:24:22 -0000       1.311
@@ -1686,6 +1686,7 @@
 void
 e_border_act_close_begin(E_Border *bd)
 {
+   if (bd->lock_close) return;
    if (bd->client.icccm.delete_request)
      {
        bd->delete_requested = 1;
@@ -1700,6 +1701,7 @@
 void
 e_border_act_kill_begin(E_Border *bd)
 {
+   if (bd->lock_close) return;
    if ((bd->client.netwm.pid > 1) && (e_config->kill_process))
      {
        kill(bd->client.netwm.pid, SIGINT);
@@ -2030,12 +2032,16 @@
    bd = e_border_find_by_client_window(e->win);
    if (!bd) return 1;
    if (bd->iconic)
-     e_border_uniconify(bd);
+     {
+       if (!bd->lock_client_iconify)
+         e_border_uniconify(bd);
+     }
    else
      {
        /* FIXME: make border "urgent" for a bit - it wants attention */
 /*     e_border_show(bd); */
-       e_border_raise(bd);
+       if (!bd->lock_client_stacking)
+         e_border_raise(bd);
      }
    return 1;
 }
@@ -2201,57 +2207,60 @@
        if (!bd->lock_client_size)
          e_border_resize(bd, w, h);
      }
-   if ((e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE) &&
-       (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING))
+   if (!bd->lock_client_stacking)
      {
-       E_Border *obd;
-
-       if (e->detail == ECORE_X_WINDOW_STACK_ABOVE)
-         {
-            obd = e_border_find_by_client_window(e->abovewin);
-            if (obd)
-              e_border_stack_above(bd, obd);
-         }
-       else if (e->detail == ECORE_X_WINDOW_STACK_BELOW)
-         {
-            obd = e_border_find_by_client_window(e->abovewin);
-            if (obd)
-              e_border_stack_below(bd, obd);
-         }
-       else if (e->detail == ECORE_X_WINDOW_STACK_TOP_IF)
-         {
-            /* FIXME: do */
-         }
-       else if (e->detail == ECORE_X_WINDOW_STACK_BOTTOM_IF)
-         {
-            /* FIXME: do */
-         }
-       else if (e->detail == ECORE_X_WINDOW_STACK_OPPOSITE)
-         {
-            /* FIXME: do */
-         }
-     }
-   else if (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE)
-     {
-       if (e->detail == ECORE_X_WINDOW_STACK_ABOVE)
-         {
-            e_border_raise(bd);
-         }
-       else if (e->detail == ECORE_X_WINDOW_STACK_BELOW)
-         {
-            e_border_lower(bd);
-         }
-       else if (e->detail == ECORE_X_WINDOW_STACK_TOP_IF)
-         {
-            /* FIXME: do */
-         }
-       else if (e->detail == ECORE_X_WINDOW_STACK_BOTTOM_IF)
+       if ((e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE) &&
+           (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING))
          {
-            /* FIXME: do */
+            E_Border *obd;
+            
+            if (e->detail == ECORE_X_WINDOW_STACK_ABOVE)
+              {
+                 obd = e_border_find_by_client_window(e->abovewin);
+                 if (obd)
+                   e_border_stack_above(bd, obd);
+              }
+            else if (e->detail == ECORE_X_WINDOW_STACK_BELOW)
+              {
+                 obd = e_border_find_by_client_window(e->abovewin);
+                 if (obd)
+                   e_border_stack_below(bd, obd);
+              }
+            else if (e->detail == ECORE_X_WINDOW_STACK_TOP_IF)
+              {
+                 /* FIXME: do */
+              }
+            else if (e->detail == ECORE_X_WINDOW_STACK_BOTTOM_IF)
+              {
+                 /* FIXME: do */
+              }
+            else if (e->detail == ECORE_X_WINDOW_STACK_OPPOSITE)
+              {
+                 /* FIXME: do */
+              }
          }
-       else if (e->detail == ECORE_X_WINDOW_STACK_OPPOSITE)
+       else if (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE)
          {
-            /* FIXME: do */
+            if (e->detail == ECORE_X_WINDOW_STACK_ABOVE)
+              {
+                 e_border_raise(bd);
+              }
+            else if (e->detail == ECORE_X_WINDOW_STACK_BELOW)
+              {
+                 e_border_lower(bd);
+              }
+            else if (e->detail == ECORE_X_WINDOW_STACK_TOP_IF)
+              {
+                 /* FIXME: do */
+              }
+            else if (e->detail == ECORE_X_WINDOW_STACK_BOTTOM_IF)
+              {
+                 /* FIXME: do */
+              }
+            else if (e->detail == ECORE_X_WINDOW_STACK_OPPOSITE)
+              {
+                 /* FIXME: do */
+              }
          }
      }
    return 1;
@@ -2656,7 +2665,8 @@
    bd->moveinfo.down.my = e->y;
    grabbed = 1;
 
-   e_border_raise(bd);
+   if (!bd->lock_user_stacking)
+     e_border_raise(bd);
    if (e->direction == RESIZE_TL)
      {
        if (!_e_border_resize_begin(bd))
@@ -3036,37 +3046,56 @@
 
    if (!strcmp(source, "close"))
      {
-       e_border_act_close_begin(bd);
+       if (!bd->lock_close)
+         e_border_act_close_begin(bd);
      }
    else if (!strcmp(source, "shade_up") || !strcmp(source, "shade"))
      {
-       if (bd->shaded) e_border_unshade(bd, E_DIRECTION_UP);
-       else e_border_shade(bd, E_DIRECTION_UP);
+       if (!bd->lock_user_shade)
+         {
+            if (bd->shaded) e_border_unshade(bd, E_DIRECTION_UP);
+            else e_border_shade(bd, E_DIRECTION_UP);
+         }
      }
    else if (!strcmp(source, "shade_down"))
      {
-       if (bd->shaded) e_border_unshade(bd, E_DIRECTION_DOWN);
-       else e_border_shade(bd, E_DIRECTION_DOWN);
+       if (!bd->lock_user_shade)
+         {
+            if (bd->shaded) e_border_unshade(bd, E_DIRECTION_DOWN);
+            else e_border_shade(bd, E_DIRECTION_DOWN);
+         }
      }
    else if (!strcmp(source, "shade_left"))
      {
-       if (bd->shaded) e_border_unshade(bd, E_DIRECTION_LEFT);
-       else e_border_shade(bd, E_DIRECTION_LEFT);
+       if (!bd->lock_user_shade)
+         {
+            if (bd->shaded) e_border_unshade(bd, E_DIRECTION_LEFT);
+            else e_border_shade(bd, E_DIRECTION_LEFT);
+         }
      }
    else if (!strcmp(source, "shade_right"))
      {
-       if (bd->shaded) e_border_unshade(bd, E_DIRECTION_RIGHT);
-       else e_border_shade(bd, E_DIRECTION_RIGHT);
+       if (!bd->lock_user_shade)
+         {
+            if (bd->shaded) e_border_unshade(bd, E_DIRECTION_RIGHT);
+            else e_border_shade(bd, E_DIRECTION_RIGHT);
+         }
      }
    else if (!strcmp(source, "maximize"))
      {
-       if (bd->maximized) e_border_unmaximize(bd);
-       else e_border_maximize(bd, e_config->maximize_policy);
+       if (!bd->lock_user_maximize)
+         {
+            if (bd->maximized) e_border_unmaximize(bd);
+            else e_border_maximize(bd, e_config->maximize_policy);
+         }
      }
    else if (!strcmp(source, "iconify"))
      {
-       if (bd->iconic) e_border_uniconify(bd);
-       else e_border_iconify(bd);
+       if (!bd->lock_user_iconify)
+         {
+            if (bd->iconic) e_border_uniconify(bd);
+            else e_border_iconify(bd);
+         }
      }
    else if (!strcmp(source, "menu"))
      {
@@ -3075,9 +3104,15 @@
        evas_pointer_canvas_xy_get(bd->bg_evas , &x, &y);
        _e_border_menu_show(bd, x + bd->x, y + bd->y, 0);
      }
+   else if (!strcmp(source, "raise"))
+     {
+       if (!bd->lock_user_stacking)
+         e_border_raise(bd);
+     }
    else if (!strcmp(source, "lower"))
      {
-       e_border_lower(bd);
+       if (!bd->lock_user_stacking)
+         e_border_lower(bd);
      }
 }
 
@@ -3666,27 +3701,30 @@
    if (bd->client.netwm.fetch.type)
      {
        e_hints_window_type_get(bd);
-       if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DESKTOP)
+       if ((!bd->lock_border) || (!bd->client.border.name))
          {
-            if (bd->client.border.name) free(bd->client.border.name);
-            bd->client.border.name = strdup("borderless");
-            bd->client.border.changed = 1;
-         }
-       if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DOCK)
-         {
-            if (bd->client.border.name) free(bd->client.border.name);
-            bd->client.border.name = strdup("borderless");
-            bd->client.border.changed = 1;
-
-            if (!bd->client.netwm.state.skip_pager)
+            if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DESKTOP)
               {
-                 bd->client.netwm.state.skip_pager = 1;
-                 bd->client.netwm.update.state = 1;
+                 if (bd->client.border.name) free(bd->client.border.name);
+                 bd->client.border.name = strdup("borderless");
+                 bd->client.border.changed = 1;
               }
-            if (!bd->client.netwm.state.skip_taskbar)
+            if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DOCK)
               {
-                 bd->client.netwm.state.skip_taskbar = 1;
-                 bd->client.netwm.update.state = 1;
+                 if (bd->client.border.name) free(bd->client.border.name);
+                 bd->client.border.name = strdup("borderless");
+                 bd->client.border.changed = 1;
+                 
+                 if (!bd->client.netwm.state.skip_pager)
+                   {
+                      bd->client.netwm.state.skip_pager = 1;
+                      bd->client.netwm.update.state = 1;
+                   }
+                 if (!bd->client.netwm.state.skip_taskbar)
+                   {
+                      bd->client.netwm.state.skip_taskbar = 1;
+                      bd->client.netwm.update.state = 1;
+                   }
               }
          }
 
@@ -3820,14 +3858,17 @@
          }
        if (bd->client.mwm.borderless != pb)
          {
-            if (bd->client.border.name) free(bd->client.border.name);
-            if (bd->client.mwm.borderless)
-              bd->client.border.name = strdup("borderless");
-            else
-              bd->client.border.name = strdup("default");
+            if ((!bd->lock_border) || (!bd->client.border.name))
+              {
+                 if (bd->client.border.name) free(bd->client.border.name);
+                 if (bd->client.mwm.borderless)
+                   bd->client.border.name = strdup("borderless");
+                 else
+                   bd->client.border.name = strdup("default");
 //          if (bd->client.mwm.borderless)
 //            printf("client %s borderless\n", bd->client.icccm.title);
-            bd->client.border.changed = 1;
+                 bd->client.border.changed = 1;
+              }
          }
        bd->client.mwm.fetch.hints = 0;
      }
@@ -4512,7 +4553,10 @@
    if (bd->take_focus)
      {
        if (e_config->focus_setting == E_FOCUS_NEW_WINDOW)
-         e_border_focus_set(bd, 1, 1);
+         {
+            if (!bd->lock_focus_out)
+              e_border_focus_set(bd, 1, 1);
+         }
        else
          {
             if (bd->client.icccm.transient_for != 0)
@@ -4522,7 +4566,10 @@
                      ((e_config->focus_setting == 
E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED) &&
                       
(e_border_find_by_client_window(bd->client.icccm.transient_for) ==
                        e_border_focused_get())))
-                   e_border_focus_set(bd, 1, 1);
+                   {
+                      if (!bd->lock_focus_out)
+                        e_border_focus_set(bd, 1, 1);
+                   }
               }
          }
        bd->take_focus = 0;
@@ -4931,94 +4978,121 @@
    bd->border_menu = 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"));
-   e_menu_item_callback_set(mi, _e_border_menu_cb_close, bd);
-   e_menu_item_icon_edje_set(mi, 
-                            (char *)e_theme_edje_file_get("base/theme/borders",
-                                                          
"widgets/border/default/close"), 
-                            "widgets/border/default/close");
-
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("Iconify"));
-   e_menu_item_callback_set(mi, _e_border_menu_cb_iconify, bd);
-   e_menu_item_icon_edje_set(mi,
-                            (char *)e_theme_edje_file_get("base/theme/borders",
-                                                          
"widgets/border/default/minimize"),
-                            "widgets/border/default/minimize");
+   if (!bd->lock_close)
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Close"));
+       e_menu_item_callback_set(mi, _e_border_menu_cb_close, bd);
+       e_menu_item_icon_edje_set(mi, 
+                                 (char 
*)e_theme_edje_file_get("base/theme/borders",
+                                                               
"widgets/border/default/close"), 
+                                 "widgets/border/default/close");
+     }
 
+   if (!bd->lock_user_iconify)
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Iconify"));
+       e_menu_item_callback_set(mi, _e_border_menu_cb_iconify, bd);
+       e_menu_item_icon_edje_set(mi,
+                                 (char 
*)e_theme_edje_file_get("base/theme/borders",
+                                                               
"widgets/border/default/minimize"),
+                                 "widgets/border/default/minimize");
+     }
+   
    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, _("Kill"));
-   e_menu_item_callback_set(mi, _e_border_menu_cb_kill, bd);
-   e_menu_item_icon_edje_set(mi, 
-                            (char *)e_theme_edje_file_get("base/theme/borders",
-                                                          
"widgets/border/default/kill"),
-                            "widgets/border/default/kill");
-   mi = e_menu_item_new(m);
-   e_menu_item_separator_set(mi, 1);
+   if (!bd->lock_close)
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Kill"));
+       e_menu_item_callback_set(mi, _e_border_menu_cb_kill, bd);
+       e_menu_item_icon_edje_set(mi, 
+                                 (char 
*)e_theme_edje_file_get("base/theme/borders",
+                                                               
"widgets/border/default/kill"),
+                                 "widgets/border/default/kill");
+       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, _("Shaded"));
-   e_menu_item_check_set(mi, 1);
-   e_menu_item_toggle_set(mi, (bd->shaded ? 1 : 0));
-   e_menu_item_callback_set(mi, _e_border_menu_cb_shade, bd);
-   e_menu_item_icon_edje_set(mi,
-                            (char *)e_theme_edje_file_get("base/theme/borders",
-                                                          
"widgets/border/default/shade"),
-                            "widgets/border/default/shade");
-
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("Maximized"));
-   e_menu_item_check_set(mi, 1);
-   e_menu_item_toggle_set(mi, (bd->maximized ? 1 : 0));
-   e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
-   e_menu_item_icon_edje_set(mi,
-                            (char *)e_theme_edje_file_get("base/theme/borders",
-                                                          
"widgets/border/default/maximize"),
-                            "widgets/border/default/maximize");
-
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("Sticky"));
-   e_menu_item_check_set(mi, 1);
-   e_menu_item_toggle_set(mi, (bd->sticky ? 1 : 0));
-   e_menu_item_callback_set(mi, _e_border_menu_cb_stick, bd);
-   e_menu_item_icon_edje_set(mi,
-                            (char *)e_theme_edje_file_get("base/theme/borders",
-                                                          
"widgets/border/default/stick"),
-                            "widgets/border/default/stick");
-
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("Always On Top"));
-   e_menu_item_check_set(mi, 1);
-   e_menu_item_toggle_set(mi, (bd->layer == 150 ? 1 : 0));
-   e_menu_item_callback_set(mi, _e_border_menu_cb_on_top, bd);
-   e_menu_item_icon_edje_set(mi,
-                            (char *)e_theme_edje_file_get("base/theme/borders",
-                                                          
"widgets/border/default/on_top"),
-                            "widgets/border/default/on_top");
+   if (!bd->lock_user_shade)
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Shaded"));
+       e_menu_item_check_set(mi, 1);
+       e_menu_item_toggle_set(mi, (bd->shaded ? 1 : 0));
+       e_menu_item_callback_set(mi, _e_border_menu_cb_shade, bd);
+       e_menu_item_icon_edje_set(mi,
+                                 (char 
*)e_theme_edje_file_get("base/theme/borders",
+                                                               
"widgets/border/default/shade"),
+                                 "widgets/border/default/shade");
+     }
 
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("Borderless"));
-   e_menu_item_check_set(mi, 1);
-   e_menu_item_toggle_set(mi, !strcmp("borderless", bd->client.border.name));
-   e_menu_item_callback_set(mi, _e_border_menu_cb_borderless, bd);
-   e_menu_item_icon_edje_set(mi,
-                            (char *)e_theme_edje_file_get("base/theme/borders",
-                                                          
"widgets/border/default/borderless"),
-                            "widgets/border/default/borderless");
+   if (!bd->lock_user_maximize)
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Maximized"));
+       e_menu_item_check_set(mi, 1);
+       e_menu_item_toggle_set(mi, (bd->maximized ? 1 : 0));
+       e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
+       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_sticky)
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Sticky"));
+       e_menu_item_check_set(mi, 1);
+       e_menu_item_toggle_set(mi, (bd->sticky ? 1 : 0));
+       e_menu_item_callback_set(mi, _e_border_menu_cb_stick, bd);
+       e_menu_item_icon_edje_set(mi,
+                                 (char 
*)e_theme_edje_file_get("base/theme/borders",
+                                                               
"widgets/border/default/stick"),
+                                 "widgets/border/default/stick");
+     }
+   
+   if (!bd->lock_user_stacking)
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Always On Top"));
+       e_menu_item_check_set(mi, 1);
+       e_menu_item_toggle_set(mi, (bd->layer == 150 ? 1 : 0));
+       e_menu_item_callback_set(mi, _e_border_menu_cb_on_top, bd);
+       e_menu_item_icon_edje_set(mi,
+                                 (char 
*)e_theme_edje_file_get("base/theme/borders",
+                                                               
"widgets/border/default/on_top"),
+                                 "widgets/border/default/on_top");
+     }
+   
+   if (!bd->lock_border)
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Borderless"));
+       e_menu_item_check_set(mi, 1);
+       e_menu_item_toggle_set(mi, !strcmp("borderless", 
bd->client.border.name));
+       e_menu_item_callback_set(mi, _e_border_menu_cb_borderless, bd);
+       e_menu_item_icon_edje_set(mi,
+                                 (char 
*)e_theme_edje_file_get("base/theme/borders",
+                                                               
"widgets/border/default/borderless"),
+                                 "widgets/border/default/borderless");
+     }
 
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("Fullscreen"));
-   e_menu_item_check_set(mi, 1);
-   e_menu_item_toggle_set(mi, bd->fullscreen);
-   e_menu_item_callback_set(mi, _e_border_menu_cb_fullscreen, bd);
-   e_menu_item_icon_edje_set(mi,
-                            (char *)e_theme_edje_file_get("base/theme/borders",
-                                                          
"widgets/border/default/fullscreen"),
-                            "widgets/border/default/fullscreen");
+   if (!bd->lock_user_fullscreen)
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Fullscreen"));
+       e_menu_item_check_set(mi, 1);
+       e_menu_item_toggle_set(mi, bd->fullscreen);
+       e_menu_item_callback_set(mi, _e_border_menu_cb_fullscreen, bd);
+       e_menu_item_icon_edje_set(mi,
+                                 (char 
*)e_theme_edje_file_get("base/theme/borders",
+                                                               
"widgets/border/default/fullscreen"),
+                                 "widgets/border/default/fullscreen");
+     }
 
    mi = e_menu_item_new(m);
    e_menu_item_separator_set(mi, 1);
@@ -5101,7 +5175,8 @@
    E_Border *bd;
 
    bd = data;
-   e_border_act_close_begin(bd);
+   if (!bd->lock_close)
+     e_border_act_close_begin(bd);
 }
 
 static void
@@ -5110,8 +5185,11 @@
    E_Border *bd;
 
    bd = data;
-   if (bd->iconic) e_border_uniconify(bd);
-   else e_border_iconify(bd);
+   if (!bd->lock_user_iconify)
+     {
+       if (bd->iconic) e_border_uniconify(bd);
+       else e_border_iconify(bd);
+     }
 }
 
 static void
@@ -5120,7 +5198,8 @@
    E_Border *bd;
 
    bd = data;
-   e_border_act_kill_begin(bd);
+   if (!bd->lock_close)
+     e_border_act_kill_begin(bd);
 }
 
 static void
@@ -5129,8 +5208,11 @@
    E_Border *bd;
 
    bd = data;
-   if (bd->maximized) e_border_unmaximize(bd);
-   else e_border_maximize(bd, e_config->maximize_policy);
+   if (!bd->lock_user_maximize)
+     {
+       if (bd->maximized) e_border_unmaximize(bd);
+       else e_border_maximize(bd, e_config->maximize_policy);
+     }
 }
 
 static void
@@ -5139,8 +5221,11 @@
    E_Border *bd;
 
    bd = data;
-   if (bd->shaded) e_border_unshade(bd, E_DIRECTION_UP);
-   else e_border_shade(bd, E_DIRECTION_UP);
+   if (!bd->lock_user_shade)
+     {
+       if (bd->shaded) e_border_unshade(bd, E_DIRECTION_UP);
+       else e_border_shade(bd, E_DIRECTION_UP);
+     }
 }
 
 static void
@@ -5171,8 +5256,11 @@
    E_Border *bd;
 
    bd = data;
-   if (bd->sticky) e_border_unstick(bd);
-   else e_border_stick(bd);
+   if (!bd->lock_user_sticky)
+     {
+       if (bd->sticky) e_border_unstick(bd);
+       else e_border_stick(bd);
+     }
 }
 
 static void
@@ -5226,11 +5314,14 @@
    bd = data;
    if (!bd) return;
    
-   toggle = e_menu_item_toggle_get(mi);
-   if (toggle)
-     e_border_fullscreen(bd);
-   else
-     e_border_unfullscreen(bd);
+   if (!bd->lock_user_fullscreen)
+     {
+       toggle = e_menu_item_toggle_get(mi);
+       if (toggle)
+         e_border_fullscreen(bd);
+       else
+         e_border_unfullscreen(bd);
+     }
 }
 
 static void
@@ -5481,7 +5572,8 @@
 {
    int w, h;
 
-   e_border_raise(bd);
+   if (!bd->lock_user_stacking)
+     e_border_raise(bd);
    if ((bd->shaded) || (bd->shading) || (bd->maximized) || (bd->fullscreen) ||
        (bd->lock_user_size))
      return 0;
@@ -5554,7 +5646,8 @@
 static int
 _e_border_move_begin(E_Border *bd)
 {
-   e_border_raise(bd);
+   if (!bd->lock_user_stacking)
+     e_border_raise(bd);
    if ((bd->maximized) || (bd->fullscreen) || (bd->lock_user_location))
      return 0;
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -3 -r1.88 -r1.89
--- e_border.h  3 Jul 2005 07:23:03 -0000       1.88
+++ e_border.h  4 Jul 2005 10:24:22 -0000       1.89
@@ -286,28 +286,28 @@
    unsigned int    take_focus : 1;
    E_Maximize      maximized;
 
-   unsigned int    lock_user_location : 1;
-   unsigned int    lock_client_location : 1;
-   unsigned int    lock_user_size : 1;
-   unsigned int    lock_client_size : 1;
-   unsigned int    lock_user_stacking : 1;
-   unsigned int    lock_client_stacking : 1;
-   unsigned int    lock_user_iconify : 1;
-   unsigned int    lock_client_iconify : 1;
+   unsigned int    lock_user_location : 1; /*DONE*/
+   unsigned int    lock_client_location : 1; /*DONE*/
+   unsigned int    lock_user_size : 1; /*DONE*/
+   unsigned int    lock_client_size : 1; /*DONE*/
+   unsigned int    lock_user_stacking : 1; /*DONE*/
+   unsigned int    lock_client_stacking : 1; /*DONE*/
+   unsigned int    lock_user_iconify : 1; /*DONE*/
+   unsigned int    lock_client_iconify : 1; /*DONE*/
    unsigned int    lock_user_desk : 1;
    unsigned int    lock_client_desk : 1;
-   unsigned int    lock_user_sticky : 1;
-   unsigned int    lock_client_sticky : 1;
-   unsigned int    lock_user_shade : 1;
-   unsigned int    lock_client_shade : 1;
-   unsigned int    lock_user_maximize : 1;
-   unsigned int    lock_client_mazimize : 1;
-   unsigned int    lock_user_fullscreen : 1;
-   unsigned int    lock_client_fullscreen : 1;
-   unsigned int    lock_border : 1;
-   unsigned int    lock_close : 1;
-   unsigned int    lock_focus_in : 1;
-   unsigned int    lock_focus_out : 1;
+   unsigned int    lock_user_sticky : 1; /*DONE*/
+   unsigned int    lock_client_sticky : 1; /*DONE*/
+   unsigned int    lock_user_shade : 1; /*DONE*/
+   unsigned int    lock_client_shade : 1; /*DONE*/
+   unsigned int    lock_user_maximize : 1; /*DONE*/
+   unsigned int    lock_client_mazimize : 1; /*DONE*/
+   unsigned int    lock_user_fullscreen : 1; /*DONE*/
+   unsigned int    lock_client_fullscreen : 1; /*DONE*/
+   unsigned int    lock_border : 1; /*DONE*/
+   unsigned int    lock_close : 1; /*DONE*/
+   unsigned int    lock_focus_in : 1; /*DONE*/
+   unsigned int    lock_focus_out : 1; /*DONE*/
    unsigned int    lock_life : 1;
    
    double          ping;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_focus.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- e_focus.c   23 May 2005 06:09:52 -0000      1.12
+++ e_focus.c   4 Jul 2005 10:24:22 -0000       1.13
@@ -32,13 +32,19 @@
 {
    if ((e_config->focus_policy == E_FOCUS_MOUSE) ||
        (e_config->focus_policy == E_FOCUS_SLOPPY))
-     e_border_focus_set(bd, 1, 1);
+     {
+       if (!bd->lock_focus_out)
+         e_border_focus_set(bd, 1, 1);
+     }
    
    bd->raise_timer = NULL;
    if (e_config->use_auto_raise)
      {
        if (e_config->auto_raise_delay == 0.0)
-         e_border_raise(bd);
+         {
+            if (!bd->lock_user_stacking)
+              e_border_raise(bd);
+         }
        else
          bd->raise_timer = ecore_timer_add(e_config->auto_raise_delay, 
_e_focus_raise_timer, bd);
      }
@@ -48,7 +54,10 @@
 e_focus_event_mouse_out(E_Border* bd)
 {
    if (e_config->focus_policy == E_FOCUS_MOUSE)
-     e_border_focus_set(bd, 0, 1);
+     {
+       if (!bd->lock_focus_in)
+         e_border_focus_set(bd, 0, 1);
+     }
 
    if (bd->raise_timer)
      {
@@ -62,12 +71,15 @@
 {
    if (e_config->focus_policy == E_FOCUS_CLICK)
      {
-       e_border_focus_set(bd, 1, 1);
-       e_border_raise(bd);
+       if (!bd->lock_focus_out)
+         e_border_focus_set(bd, 1, 1);
+       if (!bd->lock_user_stacking)
+         e_border_raise(bd);
      }
    else if (e_config->always_click_to_raise)
      {
-       e_border_raise(bd);
+       if (!bd->lock_user_stacking)
+         e_border_raise(bd);
      }
 }
 
@@ -156,7 +168,11 @@
 static int
 _e_focus_raise_timer(void* data)
 {
-   e_border_raise((E_Border*)data);
-   ((E_Border*)data)->raise_timer = NULL;
+   E_Border *bd;
+   
+   bd = data;
+   if (!bd->lock_user_stacking)
+     e_border_raise(bd);
+   bd->raise_timer = NULL;
    return 0;
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -3 -r1.55 -r1.56
--- e_hints.c   22 Jun 2005 05:34:50 -0000      1.55
+++ e_hints.c   4 Jul 2005 10:24:22 -0000       1.56
@@ -471,367 +471,368 @@
                            Ecore_X_Window_State_Action action)
 {
    int changed;
-
+   
    switch (state)
      {
       case ECORE_X_WINDOW_STATE_ICONIFIED:
-        if (action != ECORE_X_WINDOW_STATE_ACTION_ADD) return;
-        if (bd->client.icccm.state == ECORE_X_WINDOW_STATE_HINT_ICONIC) return;
-        e_border_iconify(bd);
-        break;
+       if (action != ECORE_X_WINDOW_STATE_ACTION_ADD) return;
+       if (bd->client.icccm.state == ECORE_X_WINDOW_STATE_HINT_ICONIC) return;
+       if (!bd->lock_client_iconify)
+         e_border_iconify(bd);
+       break;
       case ECORE_X_WINDOW_STATE_MODAL:
-        changed = 0;
-        switch (action)
-          {
-           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
-              if (bd->client.netwm.state.modal)
-                {
-                   bd->client.netwm.state.modal = 0;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_ADD:
-              if (!bd->client.netwm.state.modal)
-                {
-                   bd->client.netwm.state.modal = 1;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
-              bd->client.netwm.state.modal = !bd->client.netwm.state.modal;
-              changed = 1;
-              break;
-          }
-        if (changed)
-          {
-             bd->client.netwm.update.state = 1;
-             bd->changed = 1;
-          }
-        break;
+       changed = 0;
+       switch (action)
+         {
+          case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+            if (bd->client.netwm.state.modal)
+              {
+                 bd->client.netwm.state.modal = 0;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_ADD:
+            if (!bd->client.netwm.state.modal)
+              {
+                 bd->client.netwm.state.modal = 1;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+            bd->client.netwm.state.modal = !bd->client.netwm.state.modal;
+            changed = 1;
+            break;
+         }
+       if (changed)
+         {
+            bd->client.netwm.update.state = 1;
+            bd->changed = 1;
+         }
+       break;
       case ECORE_X_WINDOW_STATE_STICKY:
-        changed = 0;
-        switch (action)
-          {
-           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
-              if (bd->client.netwm.state.sticky)
-                {
-                   bd->client.netwm.state.sticky = 0;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_ADD:
-              if (!bd->client.netwm.state.sticky)
-                {
-                   bd->client.netwm.state.sticky = 1;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
-              bd->client.netwm.state.sticky = !bd->client.netwm.state.sticky;
-              changed = 1;
-              break;
-          }
-        if (changed)
-          {
-             bd->client.netwm.update.state = 1;
-             bd->changed = 1;
-             if (bd->client.netwm.state.sticky)
-               e_border_stick(bd);
-             else
-               e_border_unstick(bd);
-          }
-        break;
+       changed = 0;
+       switch (action)
+         {
+          case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+            if (bd->client.netwm.state.sticky)
+              {
+                 bd->client.netwm.state.sticky = 0;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_ADD:
+            if (!bd->client.netwm.state.sticky)
+              {
+                 bd->client.netwm.state.sticky = 1;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+            bd->client.netwm.state.sticky = !bd->client.netwm.state.sticky;
+            changed = 1;
+            break;
+         }
+       if (changed)
+         {
+            bd->client.netwm.update.state = 1;
+            bd->changed = 1;
+            if (bd->client.netwm.state.sticky)
+              e_border_stick(bd);
+            else
+              e_border_unstick(bd);
+         }
+       break;
       case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
-        changed = 0;
-        switch (action)
-          {
-           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
-              if (bd->client.netwm.state.maximized_v)
-                {
-                   bd->client.netwm.state.maximized_v = 0;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_ADD:
-              if (!bd->client.netwm.state.maximized_v)
-                {
-                   bd->client.netwm.state.maximized_v = 1;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
-              bd->client.netwm.state.maximized_v = 
!bd->client.netwm.state.maximized_v;
-              changed = 1;
-              break;
-          }
-        if (changed)
-          {
-             bd->client.netwm.update.state = 1;
-             bd->changed = 1;
-             if ((bd->client.netwm.state.maximized_v)
-                 && (bd->client.netwm.state.maximized_h))
-               e_border_maximize(bd, e_config->maximize_policy);
-             else if ((!bd->client.netwm.state.maximized_v)
-                      && (!bd->client.netwm.state.maximized_h))
-               e_border_unmaximize(bd);
-          }
-        break;
+       changed = 0;
+       switch (action)
+         {
+          case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+            if (bd->client.netwm.state.maximized_v)
+              {
+                 bd->client.netwm.state.maximized_v = 0;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_ADD:
+            if (!bd->client.netwm.state.maximized_v)
+              {
+                 bd->client.netwm.state.maximized_v = 1;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+            bd->client.netwm.state.maximized_v = 
!bd->client.netwm.state.maximized_v;
+            changed = 1;
+            break;
+         }
+       if (changed)
+         {
+            bd->client.netwm.update.state = 1;
+            bd->changed = 1;
+            if ((bd->client.netwm.state.maximized_v)
+                && (bd->client.netwm.state.maximized_h))
+              e_border_maximize(bd, e_config->maximize_policy);
+            else if ((!bd->client.netwm.state.maximized_v)
+                     && (!bd->client.netwm.state.maximized_h))
+              e_border_unmaximize(bd);
+         }
+       break;
       case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
-        changed = 0;
-        switch (action)
-          {
-           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
-              if (bd->client.netwm.state.maximized_h)
-                {
-                   bd->client.netwm.state.maximized_h = 0;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_ADD:
-              if (!bd->client.netwm.state.maximized_h)
-                {
-                   bd->client.netwm.state.maximized_h = 1;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
-              bd->client.netwm.state.maximized_h = 
!bd->client.netwm.state.maximized_h;
-              changed = 1;
-              break;
-          }
-        if (changed)
-          {
-             bd->client.netwm.update.state = 1;
-             bd->changed = 1;
-             if ((bd->client.netwm.state.maximized_v)
-                 && (bd->client.netwm.state.maximized_h))
-               e_border_maximize(bd, e_config->maximize_policy);
-             else if ((!bd->client.netwm.state.maximized_v)
-                      && (!bd->client.netwm.state.maximized_h))
-               e_border_unmaximize(bd);
-          }
-        break;
+       changed = 0;
+       switch (action)
+         {
+          case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+            if (bd->client.netwm.state.maximized_h)
+              {
+                 bd->client.netwm.state.maximized_h = 0;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_ADD:
+            if (!bd->client.netwm.state.maximized_h)
+              {
+                 bd->client.netwm.state.maximized_h = 1;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+            bd->client.netwm.state.maximized_h = 
!bd->client.netwm.state.maximized_h;
+            changed = 1;
+            break;
+         }
+       if (changed)
+         {
+            bd->client.netwm.update.state = 1;
+            bd->changed = 1;
+            if ((bd->client.netwm.state.maximized_v)
+                && (bd->client.netwm.state.maximized_h))
+              e_border_maximize(bd, e_config->maximize_policy);
+            else if ((!bd->client.netwm.state.maximized_v)
+                     && (!bd->client.netwm.state.maximized_h))
+              e_border_unmaximize(bd);
+         }
+       break;
       case ECORE_X_WINDOW_STATE_SHADED:
-        changed = 0;
-        switch (action)
-          {
-           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
-              if (bd->client.netwm.state.shaded)
-                {
-                   bd->client.netwm.state.shaded = 0;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_ADD:
-              if (!bd->client.netwm.state.shaded)
-                {
-                   bd->client.netwm.state.shaded = 1;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
-              bd->client.netwm.state.shaded = !bd->client.netwm.state.shaded;
-              changed = 1;
-              break;
-          }
-        if (changed)
-          {
-             bd->client.netwm.update.state = 1;
-             bd->changed = 1;
-             if (bd->client.netwm.state.shaded)
-               e_border_shade(bd, e_hints_window_shade_direction_get(bd));
-             else
-               e_border_unshade(bd, e_hints_window_shade_direction_get(bd));
-          }
-        break;
+       changed = 0;
+       switch (action)
+         {
+          case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+            if (bd->client.netwm.state.shaded)
+              {
+                 bd->client.netwm.state.shaded = 0;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_ADD:
+            if (!bd->client.netwm.state.shaded)
+              {
+                 bd->client.netwm.state.shaded = 1;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+            bd->client.netwm.state.shaded = !bd->client.netwm.state.shaded;
+            changed = 1;
+            break;
+         }
+       if (changed)
+         {
+            bd->client.netwm.update.state = 1;
+            bd->changed = 1;
+            if (bd->client.netwm.state.shaded)
+              e_border_shade(bd, e_hints_window_shade_direction_get(bd));
+            else
+              e_border_unshade(bd, e_hints_window_shade_direction_get(bd));
+         }
+       break;
       case ECORE_X_WINDOW_STATE_SKIP_TASKBAR:
-        changed = 0;
-        switch (action)
-          {
-           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
-              if (bd->client.netwm.state.skip_taskbar)
-                {
-                   bd->client.netwm.state.skip_taskbar = 0;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_ADD:
-              if (!bd->client.netwm.state.skip_taskbar)
-                {
-                   bd->client.netwm.state.skip_taskbar = 1;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
-              bd->client.netwm.state.skip_taskbar = 
!bd->client.netwm.state.skip_taskbar;
-              changed = 1;
-              break;
-          }
-        if (changed)
-          {
-             bd->client.netwm.update.state = 1;
-             bd->changed = 1;
-          }
-        break;
+       changed = 0;
+       switch (action)
+         {
+          case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+            if (bd->client.netwm.state.skip_taskbar)
+              {
+                 bd->client.netwm.state.skip_taskbar = 0;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_ADD:
+            if (!bd->client.netwm.state.skip_taskbar)
+              {
+                 bd->client.netwm.state.skip_taskbar = 1;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+            bd->client.netwm.state.skip_taskbar = 
!bd->client.netwm.state.skip_taskbar;
+            changed = 1;
+            break;
+         }
+       if (changed)
+         {
+            bd->client.netwm.update.state = 1;
+            bd->changed = 1;
+         }
+       break;
       case ECORE_X_WINDOW_STATE_SKIP_PAGER:
-        changed = 0;
-        switch (action)
-          {
-           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
-              if (bd->client.netwm.state.skip_pager)
-                {
-                   bd->client.netwm.state.skip_pager = 0;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_ADD:
-              if (!bd->client.netwm.state.skip_pager)
-                {
-                   bd->client.netwm.state.skip_pager = 1;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
-              bd->client.netwm.state.skip_pager = 
!bd->client.netwm.state.skip_pager;
-              changed = 1;
-              break;
-          }
-        if (changed)
-          {
-             bd->client.netwm.update.state = 1;
-             bd->changed = 1;
-          }
-        break;
+       changed = 0;
+       switch (action)
+         {
+          case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+            if (bd->client.netwm.state.skip_pager)
+              {
+                 bd->client.netwm.state.skip_pager = 0;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_ADD:
+            if (!bd->client.netwm.state.skip_pager)
+              {
+                 bd->client.netwm.state.skip_pager = 1;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+            bd->client.netwm.state.skip_pager = 
!bd->client.netwm.state.skip_pager;
+            changed = 1;
+            break;
+         }
+       if (changed)
+         {
+            bd->client.netwm.update.state = 1;
+            bd->changed = 1;
+         }
+       break;
       case ECORE_X_WINDOW_STATE_HIDDEN:
-        /* Ignore */
-        break;
+       /* Ignore */
+       break;
       case ECORE_X_WINDOW_STATE_FULLSCREEN:
-        changed = 0;
-        switch (action)
-          {
-           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
-              if (bd->client.netwm.state.fullscreen)
-                {
-                   bd->client.netwm.state.fullscreen = 0;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_ADD:
-              if (!bd->client.netwm.state.fullscreen)
-                {
-                   bd->client.netwm.state.fullscreen = 1;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
-              bd->client.netwm.state.fullscreen = 
!bd->client.netwm.state.fullscreen;
-              changed = 1;
-              break;
-          }
-        if (changed)
-          {
-             bd->client.netwm.update.state = 1;
-             bd->changed = 1;
-             if (bd->client.netwm.state.fullscreen)
-               e_border_fullscreen(bd);
-             else
-               e_border_unfullscreen(bd);
-          }
-        break;
+       changed = 0;
+       switch (action)
+         {
+          case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+            if (bd->client.netwm.state.fullscreen)
+              {
+                 bd->client.netwm.state.fullscreen = 0;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_ADD:
+            if (!bd->client.netwm.state.fullscreen)
+              {
+                 bd->client.netwm.state.fullscreen = 1;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+            bd->client.netwm.state.fullscreen = 
!bd->client.netwm.state.fullscreen;
+            changed = 1;
+            break;
+         }
+       if (changed)
+         {
+            bd->client.netwm.update.state = 1;
+            bd->changed = 1;
+            if (bd->client.netwm.state.fullscreen)
+              e_border_fullscreen(bd);
+            else
+              e_border_unfullscreen(bd);
+         }
+       break;
       case ECORE_X_WINDOW_STATE_ABOVE:
-        /* FIXME: Should this require that BELOW is set to 0 first, or just
-         * do it? */
-        changed = 0;
-        switch (action)
-          {
-           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
-              if (bd->client.netwm.state.stacking == E_STACKING_ABOVE)
-                {
-                   bd->client.netwm.state.stacking = E_STACKING_NONE;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_ADD:
-              if (bd->client.netwm.state.stacking == E_STACKING_NONE)
-                {
-                   bd->client.netwm.state.stacking = E_STACKING_ABOVE;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
-              if (bd->client.netwm.state.stacking == E_STACKING_ABOVE)
-                {
-                   bd->client.netwm.state.stacking = E_STACKING_NONE;
-                   changed = 1;
-                }
-              else if (bd->client.netwm.state.stacking == E_STACKING_NONE)
-                {
-                   bd->client.netwm.state.stacking = E_STACKING_ABOVE;
-                   changed = 1;
-                }
-              break;
-          }
-        if (changed)
-          {
-             bd->client.netwm.update.state = 1;
-             bd->changed = 1;
-             if (bd->client.netwm.state.stacking)
-               bd->layer = 150;
-             else
-               bd->layer = 100;
-             e_border_raise(bd);
-          }
-        break;
+       /* FIXME: Should this require that BELOW is set to 0 first, or just
+        * do it? */
+       changed = 0;
+       switch (action)
+         {
+          case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+            if (bd->client.netwm.state.stacking == E_STACKING_ABOVE)
+              {
+                 bd->client.netwm.state.stacking = E_STACKING_NONE;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_ADD:
+            if (bd->client.netwm.state.stacking == E_STACKING_NONE)
+              {
+                 bd->client.netwm.state.stacking = E_STACKING_ABOVE;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+            if (bd->client.netwm.state.stacking == E_STACKING_ABOVE)
+              {
+                 bd->client.netwm.state.stacking = E_STACKING_NONE;
+                 changed = 1;
+              }
+            else if (bd->client.netwm.state.stacking == E_STACKING_NONE)
+              {
+                 bd->client.netwm.state.stacking = E_STACKING_ABOVE;
+                 changed = 1;
+              }
+            break;
+         }
+       if (changed)
+         {
+            bd->client.netwm.update.state = 1;
+            bd->changed = 1;
+            if (bd->client.netwm.state.stacking)
+              bd->layer = 150;
+            else
+              bd->layer = 100;
+            e_border_raise(bd);
+         }
+       break;
       case ECORE_X_WINDOW_STATE_BELOW:
-        /* FIXME: Should this require that ABOVE is set to 0 first, or just
-         * do it? */
-        changed = 0;
-        switch (action)
-          {
-           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
-              if (bd->client.netwm.state.stacking == E_STACKING_BELOW)
-                {
-                   bd->client.netwm.state.stacking = E_STACKING_NONE;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_ADD:
-              if (bd->client.netwm.state.stacking == E_STACKING_NONE)
-                {
-                   bd->client.netwm.state.stacking = E_STACKING_BELOW;
-                   changed = 1;
-                }
-              break;
-           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
-              if (bd->client.netwm.state.stacking == E_STACKING_BELOW)
-                {
-                   bd->client.netwm.state.stacking = E_STACKING_NONE;
-                   changed = 1;
-                }
-              else if (bd->client.netwm.state.stacking == E_STACKING_NONE)
-                {
-                   bd->client.netwm.state.stacking = E_STACKING_BELOW;
-                   changed = 1;
-                }
-              break;
-          }
-        if (changed)
-          {
-             bd->client.netwm.update.state = 1;
-             bd->changed = 1;
-             if (bd->client.netwm.state.stacking)
-               bd->layer = 50;
-             else
-               bd->layer = 100;
-             e_border_raise(bd);
-          }
-        break;
+       /* FIXME: Should this require that ABOVE is set to 0 first, or just
+        * do it? */
+       changed = 0;
+       switch (action)
+         {
+          case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+            if (bd->client.netwm.state.stacking == E_STACKING_BELOW)
+              {
+                 bd->client.netwm.state.stacking = E_STACKING_NONE;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_ADD:
+            if (bd->client.netwm.state.stacking == E_STACKING_NONE)
+              {
+                 bd->client.netwm.state.stacking = E_STACKING_BELOW;
+                 changed = 1;
+              }
+            break;
+          case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+            if (bd->client.netwm.state.stacking == E_STACKING_BELOW)
+              {
+                 bd->client.netwm.state.stacking = E_STACKING_NONE;
+                 changed = 1;
+              }
+            else if (bd->client.netwm.state.stacking == E_STACKING_NONE)
+              {
+                 bd->client.netwm.state.stacking = E_STACKING_BELOW;
+                 changed = 1;
+              }
+            break;
+         }
+       if (changed)
+         {
+            bd->client.netwm.update.state = 1;
+            bd->changed = 1;
+            if (bd->client.netwm.state.stacking)
+              bd->layer = 50;
+            else
+              bd->layer = 100;
+            e_border_raise(bd);
+         }
+       break;
       case ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION:
-        /* FIXME */
-        break;
+       /* FIXME */
+       break;
       case ECORE_X_WINDOW_STATE_UNKNOWN:
-        /* Ignore */
-        break;
+       /* Ignore */
+       break;
      }
 }
 
@@ -860,47 +861,47 @@
             switch (state[i])
               {
                case ECORE_X_WINDOW_STATE_ICONIFIED:
-                  /* Ignore */
-                  break;
+                 /* Ignore */
+                 break;
                case ECORE_X_WINDOW_STATE_MODAL:
-                  bd->client.netwm.state.modal = 1;
-                  break;
+                 bd->client.netwm.state.modal = 1;
+                 break;
                case ECORE_X_WINDOW_STATE_STICKY:
-                  bd->client.netwm.state.sticky = 1;
-                  break;
+                 bd->client.netwm.state.sticky = 1;
+                 break;
                case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
-                  bd->client.netwm.state.maximized_v = 1;
-                  break;
+                 bd->client.netwm.state.maximized_v = 1;
+                 break;
                case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
-                  bd->client.netwm.state.maximized_h = 1;
-                  break;
+                 bd->client.netwm.state.maximized_h = 1;
+                 break;
                case ECORE_X_WINDOW_STATE_SHADED:
-                  bd->client.netwm.state.shaded = 1;
-                  break;
+                 bd->client.netwm.state.shaded = 1;
+                 break;
                case ECORE_X_WINDOW_STATE_SKIP_TASKBAR:
-                  bd->client.netwm.state.skip_taskbar = 1;
-                  break;
+                 bd->client.netwm.state.skip_taskbar = 1;
+                 break;
                case ECORE_X_WINDOW_STATE_SKIP_PAGER:
-                  bd->client.netwm.state.skip_pager = 1;
-                  break;
+                 bd->client.netwm.state.skip_pager = 1;
+                 break;
                case ECORE_X_WINDOW_STATE_HIDDEN:
-                  bd->client.netwm.state.hidden = 1;
-                  break;
+                 bd->client.netwm.state.hidden = 1;
+                 break;
                case ECORE_X_WINDOW_STATE_FULLSCREEN:
-                  bd->client.netwm.state.fullscreen = 1;
-                  break;
+                 bd->client.netwm.state.fullscreen = 1;
+                 break;
                case ECORE_X_WINDOW_STATE_ABOVE:
-                  bd->client.netwm.state.stacking = E_STACKING_ABOVE;
-                  break;
+                 bd->client.netwm.state.stacking = E_STACKING_ABOVE;
+                 break;
                case ECORE_X_WINDOW_STATE_BELOW:
-                  bd->client.netwm.state.stacking = E_STACKING_BELOW;
-                  break;
+                 bd->client.netwm.state.stacking = E_STACKING_BELOW;
+                 break;
                case ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION:
-                  /* FIXME */
-                  break;
+                 /* FIXME */
+                 break;
                case ECORE_X_WINDOW_STATE_UNKNOWN:
-                  /* Ignore */
-                  break;
+                 /* Ignore */
+                 break;
               }
          }
        free(state);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -3 -r1.77 -r1.78
--- e_int_menus.c       1 Jul 2005 08:20:03 -0000       1.77
+++ e_int_menus.c       4 Jul 2005 10:24:22 -0000       1.78
@@ -623,10 +623,16 @@
    
    bd = data;
    E_OBJECT_CHECK(bd);
-   if (bd->iconic) e_border_uniconify(bd);
+   if (bd->iconic)
+     {
+       if (!bd->lock_user_iconify)
+         e_border_uniconify(bd);
+     }
    e_desk_show(bd->desk);
-   e_border_raise(bd);
-   e_border_focus_set(bd, 1, 1);
+   if (!bd->lock_user_stacking)
+     e_border_raise(bd);
+   if (!bd->lock_focus_out)
+     e_border_focus_set(bd, 1, 1);
 }
 
 static void 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_winlist.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- e_winlist.c 1 Jul 2005 07:28:28 -0000       1.24
+++ e_winlist.c 4 Jul 2005 10:24:22 -0000       1.25
@@ -133,7 +133,11 @@
      }
    
    bd = e_border_focused_get();
-   if (bd) e_border_focus_set(bd, 0, 0);
+   if (bd)
+     {
+       if (!bd->lock_focus_out)
+         e_border_focus_set(bd, 0, 0);
+     }
    _e_winlist_activate_nth(1);
    evas_event_thaw(winlist->evas);
    _e_winlist_size_adjust();
@@ -232,14 +236,24 @@
      }
    if (bd)
      {
-       if (bd->iconic) e_border_uniconify(bd);
-       if (bd->shaded) e_border_unshade(bd, bd->shade.dir);
+       if (bd->iconic)
+         {
+            if (!bd->lock_user_iconify)
+              e_border_uniconify(bd);
+         }
+       if (bd->shaded)
+         {
+            if (!bd->lock_user_shade)
+              e_border_unshade(bd, bd->shade.dir);
+         }
        else if (bd->desk)
          {
             if (!bd->sticky) e_desk_show(bd->desk);
          }
-       e_border_raise(bd);
-       e_border_focus_set(bd, 1, 1);
+       if (!bd->lock_user_stacking)
+         e_border_raise(bd);
+       if (!bd->lock_focus_in)
+         e_border_focus_set(bd, 1, 1);
        if ((e_config->focus_policy != E_FOCUS_CLICK) ||
            (e_config->winlist_warp_at_end) ||
            (e_config->winlist_warp_while_selecting))
@@ -474,7 +488,8 @@
    if ((ww->border->iconic) &&
        (e_config->winlist_list_uncover_while_selecting))
      {
-       e_border_uniconify(ww->border);
+       if (!ww->border->lock_user_iconify)
+         e_border_uniconify(ww->border);
        ww->was_iconified = 1;
        ok = 1;
      }
@@ -492,7 +507,8 @@
        (ww->border->desk == e_desk_current_get(winlist->zone)) &&
        (e_config->winlist_list_uncover_while_selecting))
      {
-       e_border_unshade(ww->border, ww->border->shade.dir);
+       if (!ww->border->lock_user_shade)
+         e_border_unshade(ww->border, ww->border->shade.dir);
        ww->was_shaded = 1;
        ok = 1;
      }
@@ -513,8 +529,10 @@
             if (!animator)
               animator = ecore_animator_add(_e_winlist_animator, NULL);
          }
-       e_border_raise(ww->border);
-       e_border_focus_set(ww->border, 1, 1);
+       if (!ww->border->lock_user_stacking)
+         e_border_raise(ww->border);
+       if (!ww->border->lock_focus_out)
+         e_border_focus_set(ww->border, 1, 1);
      }
    if (ww->border->client.netwm.name)
      edje_object_part_text_set(bg_object, "title_text", 
ww->border->client.netwm.name);
@@ -544,9 +562,15 @@
    if (!win_selected) return;
    ww = win_selected->data;
    if (ww->was_shaded)
-     e_border_shade(ww->border, ww->border->shade.dir);
+     {
+       if (!ww->border->lock_user_shade)
+         e_border_shade(ww->border, ww->border->shade.dir);
+     }
    if (ww->was_iconified)
-     e_border_iconify(ww->border);
+     {
+       if (!ww->border->lock_user_iconify)
+         e_border_iconify(ww->border);
+     }
    ww->was_shaded = 0;
    ww->was_iconified = 0;
    if (icon_object)
@@ -556,7 +580,8 @@
      }
    edje_object_part_text_set(bg_object, "title_text", "");
    edje_object_signal_emit(ww->bg_object, "passive", "");
-   e_border_focus_set(ww->border, 0, 0);
+   if (!ww->border->lock_focus_in)
+     e_border_focus_set(ww->border, 0, 0);
 }
 
 static void




-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to