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_in) (E_Border *bd);
|
||||||
void (*border_focus_out) (E_Border *bd);
|
void (*border_focus_out) (E_Border *bd);
|
||||||
void (*border_activate) (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_layout) (E_Zone *zone);
|
||||||
void (*zone_move_resize) (E_Zone *zone);
|
void (*zone_move_resize) (E_Zone *zone);
|
||||||
void (*drag_start) (E_Border *bd);
|
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_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_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_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_zone_move_resize(void *data, int type, void *event);
|
||||||
static int _e_mod_layout_cb_client_message(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,
|
ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
|
||||||
_e_mod_layout_cb_client_message,
|
_e_mod_layout_cb_client_message,
|
||||||
NULL));
|
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
|
static void
|
||||||
|
@ -426,6 +432,19 @@ _e_mod_layout_cb_border_focus_out(void *data, int type, void *event)
|
||||||
return 1;
|
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
|
static int
|
||||||
_e_mod_layout_cb_zone_move_resize(void *data, int type, void *event)
|
_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_in = _layout_border_focus_in;
|
||||||
p->funcs.border_focus_out = _layout_border_focus_out;
|
p->funcs.border_focus_out = _layout_border_focus_out;
|
||||||
p->funcs.border_activate = _layout_border_activate;
|
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_layout = _layout_zone_layout;
|
||||||
p->funcs.zone_move_resize = _layout_zone_move_resize;
|
p->funcs.zone_move_resize = _layout_zone_move_resize;
|
||||||
p->funcs.drag_start = _layout_drag_start;
|
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_in = NULL;
|
||||||
p->funcs.border_focus_out = NULL;
|
p->funcs.border_focus_out = NULL;
|
||||||
p->funcs.border_activate = NULL;
|
p->funcs.border_activate = NULL;
|
||||||
|
p->funcs.border_property_change = NULL;
|
||||||
p->funcs.zone_layout = NULL;
|
p->funcs.zone_layout = NULL;
|
||||||
p->funcs.zone_move_resize = NULL;
|
p->funcs.zone_move_resize = NULL;
|
||||||
p->funcs.drag_start = 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
|
void
|
||||||
_layout_zone_layout(E_Zone *zone)
|
_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_in(E_Border *bd);
|
||||||
void _layout_border_focus_out(E_Border *bd);
|
void _layout_border_focus_out(E_Border *bd);
|
||||||
void _layout_border_activate(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_layout(E_Zone *zone);
|
||||||
void _layout_zone_move_resize(E_Zone *zone);
|
void _layout_zone_move_resize(E_Zone *zone);
|
||||||
void _layout_drag_start(E_Border *bd);
|
void _layout_drag_start(E_Border *bd);
|
||||||
|
|
Loading…
Reference in New Issue