diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 9e69f8156..8ecf9d311 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -1298,7 +1298,7 @@ e_border_fullscreen(E_Border *bd) bd->client_inset.t = 0; bd->client_inset.b = 0; - e_desk_black_set(bd->desk, 1); + e_desk_fullscreen_set(bd->desk, bd); bd->layer = 200; 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.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); 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]); } #endif - if (grabbed) return 1; if (ev->event_win == bd->win) { 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.my = ev->root.y; 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]); } #endif - if (grabbed) return 1; - if (ev->event_win == bd->win) { + if (bd->fullscreen) + return 1; if ((ev->mode == ECORE_X_EVENT_MODE_UNGRAB) && (ev->detail == ECORE_X_EVENT_DETAIL_INFERIOR)) return 1; @@ -3157,7 +3160,11 @@ _e_border_cb_mouse_out(void *data, int type, void *event) return 1; 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.my = ev->root.y; evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL); diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index 616ead7e3..dd9487b35 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -119,10 +119,11 @@ e_desk_show(E_Desk *desk) } } } - if (desk->black) + if (desk->fullscreen) { ecore_evas_show(desk->black_ecore_evas); e_container_window_raise(desk->zone->container, desk->black_win, 150); + e_border_fullscreen(desk->fullscreen); } desk->visible = 1; @@ -139,18 +140,18 @@ e_desk_show(E_Desk *desk) } 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); 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); - desk->black = 0; + desk->fullscreen = NULL; } } diff --git a/src/bin/e_desk.h b/src/bin/e_desk.h index 03d68c3ac..840558596 100644 --- a/src/bin/e_desk.h +++ b/src/bin/e_desk.h @@ -20,7 +20,7 @@ struct _E_Desk char *name; int x, y; char visible : 1; - char black : 1; + E_Border *fullscreen; 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 void e_desk_name_set(E_Desk *desk, const char *name); 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_at_xy_get(E_Zone *zone, int x, int y); EAPI E_Desk *e_desk_at_pos_get(E_Zone *zone, int pos);