forked from enlightenment/enlightenment
More checks if an focus in/out events belong to a border.
Store the active fullscreen window in it's desk. Don't allow mouse focus out from a fullscreen window. SVN revision: 15609
This commit is contained in:
parent
29b1ab8029
commit
086cb877a4
|
@ -1298,7 +1298,7 @@ e_border_fullscreen(E_Border *bd)
|
||||||
bd->client_inset.t = 0;
|
bd->client_inset.t = 0;
|
||||||
bd->client_inset.b = 0;
|
bd->client_inset.b = 0;
|
||||||
|
|
||||||
e_desk_black_set(bd->desk, 1);
|
e_desk_fullscreen_set(bd->desk, bd);
|
||||||
|
|
||||||
bd->layer = 200;
|
bd->layer = 200;
|
||||||
e_border_raise(bd);
|
e_border_raise(bd);
|
||||||
|
@ -1336,7 +1336,7 @@ e_border_unfullscreen(E_Border *bd)
|
||||||
bd->client_inset.t = bd->client_inset.st;
|
bd->client_inset.t = bd->client_inset.st;
|
||||||
bd->client_inset.b = bd->client_inset.sb;
|
bd->client_inset.b = bd->client_inset.sb;
|
||||||
|
|
||||||
e_desk_black_set(bd->desk, 0);
|
e_desk_fullscreen_set(bd->desk, NULL);
|
||||||
|
|
||||||
e_border_move_resize(bd, bd->saved.x, bd->saved.y, bd->saved.w, bd->saved.h);
|
e_border_move_resize(bd, bd->saved.x, bd->saved.y, bd->saved.w, bd->saved.h);
|
||||||
ecore_evas_show(bd->bg_ecore_evas);
|
ecore_evas_show(bd->bg_ecore_evas);
|
||||||
|
@ -3091,12 +3091,15 @@ _e_border_cb_mouse_in(void *data, int type, void *event)
|
||||||
details[ev->detail]);
|
details[ev->detail]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (grabbed) return 1;
|
|
||||||
if (ev->event_win == bd->win)
|
if (ev->event_win == bd->win)
|
||||||
{
|
{
|
||||||
e_focus_event_mouse_in(bd);
|
e_focus_event_mouse_in(bd);
|
||||||
}
|
}
|
||||||
if (ev->win != bd->event_win) return 1;
|
if ((ev->win != bd->win) &&
|
||||||
|
(ev->win != bd->event_win) &&
|
||||||
|
(ev->event_win != bd->win) &&
|
||||||
|
(ev->event_win != bd->event_win))
|
||||||
|
return 1;
|
||||||
bd->mouse.current.mx = ev->root.x;
|
bd->mouse.current.mx = ev->root.x;
|
||||||
bd->mouse.current.my = ev->root.y;
|
bd->mouse.current.my = ev->root.y;
|
||||||
evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL);
|
evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL);
|
||||||
|
@ -3143,10 +3146,10 @@ _e_border_cb_mouse_out(void *data, int type, void *event)
|
||||||
details[ev->detail]);
|
details[ev->detail]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (grabbed) return 1;
|
|
||||||
|
|
||||||
if (ev->event_win == bd->win)
|
if (ev->event_win == bd->win)
|
||||||
{
|
{
|
||||||
|
if (bd->fullscreen)
|
||||||
|
return 1;
|
||||||
if ((ev->mode == ECORE_X_EVENT_MODE_UNGRAB) &&
|
if ((ev->mode == ECORE_X_EVENT_MODE_UNGRAB) &&
|
||||||
(ev->detail == ECORE_X_EVENT_DETAIL_INFERIOR))
|
(ev->detail == ECORE_X_EVENT_DETAIL_INFERIOR))
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -3157,7 +3160,11 @@ _e_border_cb_mouse_out(void *data, int type, void *event)
|
||||||
return 1;
|
return 1;
|
||||||
e_focus_event_mouse_out(bd);
|
e_focus_event_mouse_out(bd);
|
||||||
}
|
}
|
||||||
if (ev->win != bd->event_win) return 1;
|
if ((ev->win != bd->win) &&
|
||||||
|
(ev->win != bd->event_win) &&
|
||||||
|
(ev->event_win != bd->win) &&
|
||||||
|
(ev->event_win != bd->event_win))
|
||||||
|
return 1;
|
||||||
bd->mouse.current.mx = ev->root.x;
|
bd->mouse.current.mx = ev->root.x;
|
||||||
bd->mouse.current.my = ev->root.y;
|
bd->mouse.current.my = ev->root.y;
|
||||||
evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL);
|
evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL);
|
||||||
|
|
|
@ -119,10 +119,11 @@ e_desk_show(E_Desk *desk)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (desk->black)
|
if (desk->fullscreen)
|
||||||
{
|
{
|
||||||
ecore_evas_show(desk->black_ecore_evas);
|
ecore_evas_show(desk->black_ecore_evas);
|
||||||
e_container_window_raise(desk->zone->container, desk->black_win, 150);
|
e_container_window_raise(desk->zone->container, desk->black_win, 150);
|
||||||
|
e_border_fullscreen(desk->fullscreen);
|
||||||
}
|
}
|
||||||
desk->visible = 1;
|
desk->visible = 1;
|
||||||
|
|
||||||
|
@ -139,18 +140,18 @@ e_desk_show(E_Desk *desk)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
e_desk_black_set(E_Desk *desk, int set)
|
e_desk_fullscreen_set(E_Desk *desk, E_Border *bd)
|
||||||
{
|
{
|
||||||
if ((!desk->black) && (set))
|
if ((!desk->fullscreen) && (bd))
|
||||||
{
|
{
|
||||||
ecore_evas_show(desk->black_ecore_evas);
|
ecore_evas_show(desk->black_ecore_evas);
|
||||||
e_container_window_raise(desk->zone->container, desk->black_win, 150);
|
e_container_window_raise(desk->zone->container, desk->black_win, 150);
|
||||||
desk->black = 1;
|
desk->fullscreen = bd;
|
||||||
}
|
}
|
||||||
else if ((desk->black) && (!set))
|
else if ((desk->fullscreen) && (!bd))
|
||||||
{
|
{
|
||||||
ecore_evas_hide(desk->black_ecore_evas);
|
ecore_evas_hide(desk->black_ecore_evas);
|
||||||
desk->black = 0;
|
desk->fullscreen = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ struct _E_Desk
|
||||||
char *name;
|
char *name;
|
||||||
int x, y;
|
int x, y;
|
||||||
char visible : 1;
|
char visible : 1;
|
||||||
char black : 1;
|
E_Border *fullscreen;
|
||||||
|
|
||||||
Evas_Object *bg_object;
|
Evas_Object *bg_object;
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ EAPI int e_desk_shutdown(void);
|
||||||
EAPI E_Desk *e_desk_new(E_Zone *zone, int x, int y);
|
EAPI E_Desk *e_desk_new(E_Zone *zone, int x, int y);
|
||||||
EAPI void e_desk_name_set(E_Desk *desk, const char *name);
|
EAPI void e_desk_name_set(E_Desk *desk, const char *name);
|
||||||
EAPI void e_desk_show(E_Desk *desk);
|
EAPI void e_desk_show(E_Desk *desk);
|
||||||
EAPI void e_desk_black_set(E_Desk *desk, int set);
|
EAPI void e_desk_fullscreen_set(E_Desk *desk, E_Border *bd);
|
||||||
EAPI E_Desk *e_desk_current_get(E_Zone *zone);
|
EAPI E_Desk *e_desk_current_get(E_Zone *zone);
|
||||||
EAPI E_Desk *e_desk_at_xy_get(E_Zone *zone, int x, int y);
|
EAPI E_Desk *e_desk_at_xy_get(E_Zone *zone, int x, int y);
|
||||||
EAPI E_Desk *e_desk_at_pos_get(E_Zone *zone, int pos);
|
EAPI E_Desk *e_desk_at_pos_get(E_Zone *zone, int pos);
|
||||||
|
|
Loading…
Reference in New Issue