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