forked from enlightenment/enlightenment
Handle border property change events for Fullscreen/Unfullscreen.
SVN revision: 45932
This commit is contained in:
parent
814260e35b
commit
7d96aaa67f
|
@ -47,6 +47,7 @@ struct _E_Illume_Layout_Policy
|
|||
void (*border_focus_in) (E_Border *bd);
|
||||
void (*border_focus_out) (E_Border *bd);
|
||||
void (*border_activate) (E_Border *bd);
|
||||
void (*border_property_change) (E_Border *bd, Ecore_X_Event_Window_Property *event);
|
||||
void (*zone_layout) (E_Zone *zone);
|
||||
void (*zone_move_resize) (E_Zone *zone);
|
||||
void (*drag_start) (E_Border *bd);
|
||||
|
|
|
@ -17,6 +17,7 @@ static int _e_mod_layout_cb_border_add(void *data, int type, void *event);
|
|||
static int _e_mod_layout_cb_border_del(void *data, int type, void *event);
|
||||
static int _e_mod_layout_cb_border_focus_in(void *data, int type, void *event);
|
||||
static int _e_mod_layout_cb_border_focus_out(void *data, int type, void *event);
|
||||
static int _e_mod_layout_cb_border_property_change(void *data, int type, void *event);
|
||||
static int _e_mod_layout_cb_zone_move_resize(void *data, int type, void *event);
|
||||
static int _e_mod_layout_cb_client_message(void *data, int type, void *event);
|
||||
|
||||
|
@ -302,6 +303,11 @@ _e_mod_layout_handlers_add(void)
|
|||
ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
|
||||
_e_mod_layout_cb_client_message,
|
||||
NULL));
|
||||
handlers =
|
||||
eina_list_append(handlers,
|
||||
ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY,
|
||||
_e_mod_layout_cb_border_property_change,
|
||||
NULL));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -426,6 +432,19 @@ _e_mod_layout_cb_border_focus_out(void *data, int type, void *event)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_e_mod_layout_cb_border_property_change(void *data, int type, void *event)
|
||||
{
|
||||
Ecore_X_Event_Window_Property *ev;
|
||||
E_Border *bd;
|
||||
|
||||
ev = event;
|
||||
if (!(bd = e_border_find_by_client_window(ev->win))) return 1;
|
||||
if ((policy) && (policy->funcs.border_property_change))
|
||||
policy->funcs.border_property_change(bd, ev);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_e_mod_layout_cb_zone_move_resize(void *data, int type, void *event)
|
||||
{
|
||||
|
|
|
@ -15,6 +15,7 @@ e_layapi_init(E_Illume_Layout_Policy *p)
|
|||
p->funcs.border_focus_in = _layout_border_focus_in;
|
||||
p->funcs.border_focus_out = _layout_border_focus_out;
|
||||
p->funcs.border_activate = _layout_border_activate;
|
||||
p->funcs.border_property_change = _layout_border_property_change;
|
||||
p->funcs.zone_layout = _layout_zone_layout;
|
||||
p->funcs.zone_move_resize = _layout_zone_move_resize;
|
||||
p->funcs.drag_start = _layout_drag_start;
|
||||
|
@ -30,6 +31,7 @@ e_layapi_shutdown(E_Illume_Layout_Policy *p)
|
|||
p->funcs.border_focus_in = NULL;
|
||||
p->funcs.border_focus_out = NULL;
|
||||
p->funcs.border_activate = NULL;
|
||||
p->funcs.border_property_change = NULL;
|
||||
p->funcs.zone_layout = NULL;
|
||||
p->funcs.zone_move_resize = NULL;
|
||||
p->funcs.drag_start = NULL;
|
||||
|
|
|
@ -115,6 +115,26 @@ _layout_border_activate(E_Border *bd)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
_layout_border_property_change(E_Border *bd, Ecore_X_Event_Window_Property *event)
|
||||
{
|
||||
E_Border *ind;
|
||||
|
||||
if (event->atom != ECORE_X_ATOM_NET_WM_STATE) return;
|
||||
if ((!bd->client.icccm.name) || (!bd->client.icccm.class) ||
|
||||
(bd->stolen))
|
||||
return;
|
||||
if (!(ind = e_illume_border_top_shelf_get(bd->zone))) return;
|
||||
if ((bd->fullscreen) || (bd->need_fullscreen))
|
||||
{
|
||||
if (ind) e_border_hide(ind, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ind) e_border_show(ind);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
_layout_zone_layout(E_Zone *zone)
|
||||
{
|
||||
|
|
|
@ -17,6 +17,7 @@ void _layout_border_del(E_Border *bd);
|
|||
void _layout_border_focus_in(E_Border *bd);
|
||||
void _layout_border_focus_out(E_Border *bd);
|
||||
void _layout_border_activate(E_Border *bd);
|
||||
void _layout_border_property_change(E_Border *bd, Ecore_X_Event_Window_Property *event);
|
||||
void _layout_zone_layout(E_Zone *zone);
|
||||
void _layout_zone_move_resize(E_Zone *zone);
|
||||
void _layout_drag_start(E_Border *bd);
|
||||
|
|
Loading…
Reference in New Issue