implement most of the locks

SVN revision: 15638
This commit is contained in:
Carsten Haitzler 2005-07-04 10:24:22 +00:00
parent f18b13c902
commit b7e6e8b1f2
8 changed files with 769 additions and 614 deletions

6
TODO
View File

@ -8,6 +8,9 @@ Some of the things (in very short form) that need to be done to E17...
BUGS / FIXES
-------------------------------------------------------------------------------
* e_hints.c manually changes flags on a border isnetad of calling
e_border_stick() for exampe or the calls in e_border.c - add calls as needed
to e_border.c. before calling check the lock flags too.
* BUG: in general fullscreen needs work, cleaning and testing. dont allow
desktop switches for the desk a fullscreened window is on, nor allow windows
to be raised above the fs win etc. ie the app must seem to be entirely fs for
@ -40,8 +43,7 @@ Some of the things (in very short form) that need to be done to E17...
ESSENTIAL FEATURES
-------------------------------------------------------------------------------
* add window placement optiond like place at pointer
* add option like "focus all new windows" etc.
* add window placement options like place at pointer
* shaded windows should not allow border changes by the user
* if a border is borderless it should not be allowed to be shaded (padl/r/t/b
is 0)

View File

@ -58,6 +58,7 @@ ACT_FN_GO(window_move)
if (!obj) obj = E_OBJECT(e_border_focused_get());
if (!obj) return;
if (obj->type != E_BORDER_TYPE) return;
if (!((E_Border *)obj)->lock_user_location)
e_border_act_move_begin((E_Border *)obj, NULL);
}
ACT_FN_GO_MOUSE(window_move)
@ -65,6 +66,7 @@ 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;
if (!((E_Border *)obj)->lock_user_location)
e_border_act_move_begin((E_Border *)obj, ev);
}
ACT_FN_END(window_move)
@ -88,6 +90,7 @@ ACT_FN_GO(window_resize)
if (!obj) obj = E_OBJECT(e_border_focused_get());
if (!obj) return;
if (obj->type != E_BORDER_TYPE) return;
if (!((E_Border *)obj)->lock_user_size)
e_border_act_resize_begin((E_Border *)obj, NULL);
}
ACT_FN_GO_MOUSE(window_resize)
@ -95,6 +98,7 @@ 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;
if (!((E_Border *)obj)->lock_user_size)
e_border_act_resize_begin((E_Border *)obj, ev);
}
ACT_FN_END(window_resize)
@ -157,6 +161,7 @@ ACT_FN_GO(window_raise)
obj = E_OBJECT(e_border_focused_get());
if (!obj) return;
}
if (!((E_Border *)obj)->lock_user_stacking)
e_border_raise((E_Border *)obj);
}
@ -170,6 +175,7 @@ ACT_FN_GO(window_lower)
obj = E_OBJECT(e_border_focused_get());
if (!obj) return;
}
if (!((E_Border *)obj)->lock_user_stacking)
e_border_lower((E_Border *)obj);
}
@ -183,6 +189,7 @@ ACT_FN_GO(window_close)
obj = E_OBJECT(e_border_focused_get());
if (!obj) return;
}
if (!((E_Border *)obj)->lock_close)
e_border_act_close_begin((E_Border *)obj);
}
@ -196,6 +203,7 @@ ACT_FN_GO(window_kill)
obj = E_OBJECT(e_border_focused_get());
if (!obj) return;
}
if (!((E_Border *)obj)->lock_close)
e_border_act_kill_begin((E_Border *)obj);
}
@ -209,6 +217,7 @@ ACT_FN_GO(window_sticky_toggle)
obj = E_OBJECT(e_border_focused_get());
if (!obj) return;
}
if (!((E_Border *)obj)->lock_user_sticky)
{
E_Border *bd;
@ -228,6 +237,7 @@ ACT_FN_GO(window_iconic_toggle)
obj = E_OBJECT(e_border_focused_get());
if (!obj) return;
}
if (!((E_Border *)obj)->lock_user_iconify)
{
E_Border *bd;
@ -247,6 +257,7 @@ ACT_FN_GO(window_maximized_toggle)
obj = E_OBJECT(e_border_focused_get());
if (!obj) return;
}
if (!((E_Border *)obj)->lock_user_maximize)
{
E_Border *bd;
@ -266,6 +277,7 @@ ACT_FN_GO(window_shaded_toggle)
obj = E_OBJECT(e_border_focused_get());
if (!obj) return;
}
if (!((E_Border *)obj)->lock_user_shade)
{
E_Border *bd;

View File

@ -1686,6 +1686,7 @@ e_border_act_menu_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev, int k
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 @@ e_border_act_close_begin(E_Border *bd)
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,11 +2032,15 @@ _e_border_cb_window_show_request(void *data, int ev_type, void *ev)
bd = e_border_find_by_client_window(e->win);
if (!bd) return 1;
if (bd->iconic)
{
if (!bd->lock_client_iconify)
e_border_uniconify(bd);
}
else
{
/* FIXME: make border "urgent" for a bit - it wants attention */
/* e_border_show(bd); */
if (!bd->lock_client_stacking)
e_border_raise(bd);
}
return 1;
@ -2201,6 +2207,8 @@ _e_border_cb_window_configure_request(void *data, int ev_type, void *ev)
if (!bd->lock_client_size)
e_border_resize(bd, w, h);
}
if (!bd->lock_client_stacking)
{
if ((e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE) &&
(e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING))
{
@ -2254,6 +2262,7 @@ _e_border_cb_window_configure_request(void *data, int ev_type, void *ev)
/* FIXME: do */
}
}
}
return 1;
}
@ -2656,6 +2665,7 @@ _e_border_cb_window_move_resize_request(void *data, int ev_type, void *ev)
bd->moveinfo.down.my = e->y;
grabbed = 1;
if (!bd->lock_user_stacking)
e_border_raise(bd);
if (e->direction == RESIZE_TL)
{
@ -3036,38 +3046,57 @@ _e_border_cb_signal_action(void *data, Evas_Object *obj, const char *emission, c
if (!strcmp(source, "close"))
{
if (!bd->lock_close)
e_border_act_close_begin(bd);
}
else if (!strcmp(source, "shade_up") || !strcmp(source, "shade"))
{
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->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->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->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->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->lock_user_iconify)
{
if (bd->iconic) e_border_uniconify(bd);
else e_border_iconify(bd);
}
}
else if (!strcmp(source, "menu"))
{
Evas_Coord x, y;
@ -3075,8 +3104,14 @@ _e_border_cb_signal_action(void *data, Evas_Object *obj, const char *emission, c
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"))
{
if (!bd->lock_user_stacking)
e_border_lower(bd);
}
}
@ -3666,6 +3701,8 @@ _e_border_eval(E_Border *bd)
if (bd->client.netwm.fetch.type)
{
e_hints_window_type_get(bd);
if ((!bd->lock_border) || (!bd->client.border.name))
{
if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DESKTOP)
{
if (bd->client.border.name) free(bd->client.border.name);
@ -3689,6 +3726,7 @@ _e_border_eval(E_Border *bd)
bd->client.netwm.update.state = 1;
}
}
}
bd->client.netwm.fetch.type = 0;
}
@ -3819,6 +3857,8 @@ _e_border_eval(E_Border *bd)
bd->client.mwm.borderless = 1;
}
if (bd->client.mwm.borderless != pb)
{
if ((!bd->lock_border) || (!bd->client.border.name))
{
if (bd->client.border.name) free(bd->client.border.name);
if (bd->client.mwm.borderless)
@ -3829,6 +3869,7 @@ _e_border_eval(E_Border *bd)
// printf("client %s borderless\n", bd->client.icccm.title);
bd->client.border.changed = 1;
}
}
bd->client.mwm.fetch.hints = 0;
}
if (bd->client.icccm.fetch.transient_for)
@ -4512,7 +4553,10 @@ _e_border_eval(E_Border *bd)
if (bd->take_focus)
{
if (e_config->focus_setting == E_FOCUS_NEW_WINDOW)
{
if (!bd->lock_focus_out)
e_border_focus_set(bd, 1, 1);
}
else
{
if (bd->client.icccm.transient_for != 0)
@ -4522,9 +4566,12 @@ _e_border_eval(E_Border *bd)
((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())))
{
if (!bd->lock_focus_out)
e_border_focus_set(bd, 1, 1);
}
}
}
bd->take_focus = 0;
}
@ -4931,6 +4978,8 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
bd->border_menu = m;
e_menu_post_deactivate_callback_set(m, _e_border_cb_border_menu_end, NULL);
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);
@ -4938,7 +4987,10 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
(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);
@ -4946,10 +4998,13 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
(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);
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);
@ -4959,7 +5014,10 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
"widgets/border/default/kill");
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
}
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);
@ -4969,7 +5027,10 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
(char *)e_theme_edje_file_get("base/theme/borders",
"widgets/border/default/shade"),
"widgets/border/default/shade");
}
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);
@ -4979,7 +5040,10 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
(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);
@ -4989,7 +5053,10 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
(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);
@ -4999,7 +5066,10 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
(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);
@ -5009,7 +5079,10 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
(char *)e_theme_edje_file_get("base/theme/borders",
"widgets/border/default/borderless"),
"widgets/border/default/borderless");
}
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);
@ -5019,6 +5092,7 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
(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,6 +5175,7 @@ _e_border_menu_cb_close(void *data, E_Menu *m, E_Menu_Item *mi)
E_Border *bd;
bd = data;
if (!bd->lock_close)
e_border_act_close_begin(bd);
}
@ -5110,9 +5185,12 @@ _e_border_menu_cb_iconify(void *data, E_Menu *m, E_Menu_Item *mi)
E_Border *bd;
bd = data;
if (!bd->lock_user_iconify)
{
if (bd->iconic) e_border_uniconify(bd);
else e_border_iconify(bd);
}
}
static void
_e_border_menu_cb_kill(void *data, E_Menu *m, E_Menu_Item *mi)
@ -5120,6 +5198,7 @@ _e_border_menu_cb_kill(void *data, E_Menu *m, E_Menu_Item *mi)
E_Border *bd;
bd = data;
if (!bd->lock_close)
e_border_act_kill_begin(bd);
}
@ -5129,9 +5208,12 @@ _e_border_menu_cb_maximize(void *data, E_Menu *m, E_Menu_Item *mi)
E_Border *bd;
bd = data;
if (!bd->lock_user_maximize)
{
if (bd->maximized) e_border_unmaximize(bd);
else e_border_maximize(bd, e_config->maximize_policy);
}
}
static void
_e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi)
@ -5139,9 +5221,12 @@ _e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi)
E_Border *bd;
bd = data;
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
_e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi)
@ -5171,9 +5256,12 @@ _e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi)
E_Border *bd;
bd = data;
if (!bd->lock_user_sticky)
{
if (bd->sticky) e_border_unstick(bd);
else e_border_stick(bd);
}
}
static void
_e_border_menu_cb_on_top(void *data, E_Menu *m, E_Menu_Item *mi)
@ -5226,12 +5314,15 @@ _e_border_menu_cb_fullscreen(void *data, E_Menu *m, E_Menu_Item *mi)
bd = data;
if (!bd) return;
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
_e_border_menu_cb_sendto_pre(void *data, E_Menu *m, E_Menu_Item *mi)
@ -5481,6 +5572,7 @@ _e_border_resize_begin(E_Border *bd)
{
int w, h;
if (!bd->lock_user_stacking)
e_border_raise(bd);
if ((bd->shaded) || (bd->shading) || (bd->maximized) || (bd->fullscreen) ||
(bd->lock_user_size))
@ -5554,6 +5646,7 @@ _e_border_resize_update(E_Border *bd)
static int
_e_border_move_begin(E_Border *bd)
{
if (!bd->lock_user_stacking)
e_border_raise(bd);
if ((bd->maximized) || (bd->fullscreen) || (bd->lock_user_location))
return 0;

View File

@ -286,28 +286,28 @@ struct _E_Border
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;

View File

@ -32,13 +32,19 @@ e_focus_event_mouse_in(E_Border* bd)
{
if ((e_config->focus_policy == E_FOCUS_MOUSE) ||
(e_config->focus_policy == E_FOCUS_SLOPPY))
{
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)
{
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 @@ void
e_focus_event_mouse_out(E_Border* bd)
{
if (e_config->focus_policy == E_FOCUS_MOUSE)
{
if (!bd->lock_focus_in)
e_border_focus_set(bd, 0, 1);
}
if (bd->raise_timer)
{
@ -62,11 +71,14 @@ e_focus_event_mouse_down(E_Border* bd)
{
if (e_config->focus_policy == E_FOCUS_CLICK)
{
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)
{
if (!bd->lock_user_stacking)
e_border_raise(bd);
}
}
@ -156,7 +168,11 @@ e_focus_setdown(E_Border *bd)
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;
}

View File

@ -477,6 +477,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State 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;
if (!bd->lock_client_iconify)
e_border_iconify(bd);
break;
case ECORE_X_WINDOW_STATE_MODAL:

View File

@ -623,9 +623,15 @@ _e_int_menus_clients_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
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);
if (!bd->lock_user_stacking)
e_border_raise(bd);
if (!bd->lock_focus_out)
e_border_focus_set(bd, 1, 1);
}

View File

@ -133,7 +133,11 @@ e_winlist_show(E_Zone *zone)
}
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,13 +236,23 @@ e_winlist_hide(void)
}
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);
}
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) ||
@ -474,6 +488,7 @@ _e_winlist_activate(void)
if ((ww->border->iconic) &&
(e_config->winlist_list_uncover_while_selecting))
{
if (!ww->border->lock_user_iconify)
e_border_uniconify(ww->border);
ww->was_iconified = 1;
ok = 1;
@ -492,6 +507,7 @@ _e_winlist_activate(void)
(ww->border->desk == e_desk_current_get(winlist->zone)) &&
(e_config->winlist_list_uncover_while_selecting))
{
if (!ww->border->lock_user_shade)
e_border_unshade(ww->border, ww->border->shade.dir);
ww->was_shaded = 1;
ok = 1;
@ -513,7 +529,9 @@ _e_winlist_activate(void)
if (!animator)
animator = ecore_animator_add(_e_winlist_animator, NULL);
}
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)
@ -544,9 +562,15 @@ _e_winlist_deactivate(void)
if (!win_selected) return;
ww = win_selected->data;
if (ww->was_shaded)
{
if (!ww->border->lock_user_shade)
e_border_shade(ww->border, ww->border->shade.dir);
}
if (ww->was_iconified)
{
if (!ww->border->lock_user_iconify)
e_border_iconify(ww->border);
}
ww->was_shaded = 0;
ww->was_iconified = 0;
if (icon_object)
@ -556,6 +580,7 @@ _e_winlist_deactivate(void)
}
edje_object_part_text_set(bg_object, "title_text", "");
edje_object_signal_emit(ww->bg_object, "passive", "");
if (!ww->border->lock_focus_in)
e_border_focus_set(ww->border, 0, 0);
}