forked from enlightenment/efl
booyah. added lots of ecore_evas state stuff and ability to track
state changes too made by a wm - eg getting iconified. SVN revision: 68493
This commit is contained in:
parent
1bef88b19c
commit
57c681a33e
|
@ -531,4 +531,11 @@
|
||||||
2012-02-28 Carsten Haitzler (The Rasterman)
|
2012-02-28 Carsten Haitzler (The Rasterman)
|
||||||
|
|
||||||
* Add ecore_x_netwm_icons_set()
|
* Add ecore_x_netwm_icons_set()
|
||||||
|
* Add ecore_evas_window_group_set() ecore_evas_window_group_get()
|
||||||
|
ecore_evas_aspect_set() ecore_evas_aspect_get()
|
||||||
|
ecore_evas_urgent_set() ecore_evas_urgent_get()
|
||||||
|
ecore_evas_modal_set() ecore_evas_modal_get()
|
||||||
|
ecore_evas_demand_attention_set()
|
||||||
|
ecore_evas_demand_attention_get()
|
||||||
|
ecore_evas_focus_skip_set() ecore_evas_focus_skip_get()
|
||||||
|
ecore_evas_callback_state_change_set()
|
||||||
|
|
|
@ -401,6 +401,20 @@ EAPI void ecore_evas_fullscreen_set(Ecore_Evas *ee, Eina_Bool on);
|
||||||
* @see ecore_evas_fullscreen_set()
|
* @see ecore_evas_fullscreen_set()
|
||||||
*/
|
*/
|
||||||
EAPI Eina_Bool ecore_evas_fullscreen_get(const Ecore_Evas *ee);
|
EAPI Eina_Bool ecore_evas_fullscreen_get(const Ecore_Evas *ee);
|
||||||
|
|
||||||
|
EAPI void ecore_evas_window_group_set(Ecore_Evas *ee, const Ecore_Evas *ee_group);
|
||||||
|
EAPI const Ecore_Evas *ecore_evas_window_group_get(const Ecore_Evas *ee);
|
||||||
|
EAPI void ecore_evas_aspect_set(Ecore_Evas *ee, double aspect);
|
||||||
|
EAPI double ecore_evas_aspect_get(const Ecore_Evas *ee);
|
||||||
|
EAPI void ecore_evas_urgent_set(Ecore_Evas *ee, Eina_Bool urgent);
|
||||||
|
EAPI Eina_Bool ecore_evas_urgent_get(const Ecore_Evas *ee);
|
||||||
|
EAPI void ecore_evas_modal_set(Ecore_Evas *ee, Eina_Bool modal);
|
||||||
|
EAPI Eina_Bool ecore_evas_modal_get(const Ecore_Evas *ee);
|
||||||
|
EAPI void ecore_evas_demand_attention_set(Ecore_Evas *ee, Eina_Bool demand);
|
||||||
|
EAPI Eina_Bool ecore_evas_demand_attention_get(const Ecore_Evas *ee);
|
||||||
|
EAPI void ecore_evas_focus_skip_set(Ecore_Evas *ee, Eina_Bool skip);
|
||||||
|
EAPI Eina_Bool ecore_evas_focus_skip_get(const Ecore_Evas *ee);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set if this evas should ignore @b all events.
|
* @brief Set if this evas should ignore @b all events.
|
||||||
*
|
*
|
||||||
|
@ -1209,6 +1223,19 @@ EAPI void ecore_evas_callback_post_render_set(Ecore_Evas *ee, Ecore_Evas_
|
||||||
* windowing system.
|
* windowing system.
|
||||||
*/
|
*/
|
||||||
EAPI void ecore_evas_callback_pre_free_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
EAPI void ecore_evas_callback_pre_free_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
||||||
|
/**
|
||||||
|
* Set a callback for Ecore_Evas state changes.
|
||||||
|
* @param ee The Ecore_Evas to set callbacks on
|
||||||
|
* @param func The function to call
|
||||||
|
|
||||||
|
* A call to this function will set a callback on an Ecore_Evas, causing
|
||||||
|
* @p func to be called whenever @p ee changes state.
|
||||||
|
*
|
||||||
|
* @warning If and when this function is called depends on the underlying
|
||||||
|
* windowing system.
|
||||||
|
*/
|
||||||
|
EAPI void ecore_evas_callback_state_change_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
||||||
|
|
||||||
EAPI Evas *ecore_evas_get(const Ecore_Evas *ee);
|
EAPI Evas *ecore_evas_get(const Ecore_Evas *ee);
|
||||||
EAPI void ecore_evas_managed_move(Ecore_Evas *ee, int x, int y);
|
EAPI void ecore_evas_managed_move(Ecore_Evas *ee, int x, int y);
|
||||||
EAPI void ecore_evas_shaped_set(Ecore_Evas *ee, Eina_Bool shaped);
|
EAPI void ecore_evas_shaped_set(Ecore_Evas *ee, Eina_Bool shaped);
|
||||||
|
|
|
@ -1132,6 +1132,18 @@ ecore_evas_callback_pre_free_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
|
||||||
ee->func.fn_pre_free = func;
|
ee->func.fn_pre_free = func;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_evas_callback_state_change_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"ecore_evas_callback_state_change_set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ee->func.fn_state_change = func;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an Ecore_Evas's Evas
|
* Get an Ecore_Evas's Evas
|
||||||
* @param ee The Ecore_Evas whose Evas you wish to get
|
* @param ee The Ecore_Evas whose Evas you wish to get
|
||||||
|
@ -2100,6 +2112,162 @@ ecore_evas_sticky_get(const Ecore_Evas *ee)
|
||||||
return ee->prop.sticky ? EINA_TRUE : EINA_FALSE;
|
return ee->prop.sticky ? EINA_TRUE : EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_evas_window_group_set(Ecore_Evas *ee, const Ecore_Evas *ee_group)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
IFC(ee, fn_window_group_set) (ee, ee_group);
|
||||||
|
IFE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI const Ecore_Evas *
|
||||||
|
ecore_evas_window_group_get(const Ecore_Evas *ee)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
return ee->prop.group_ee;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_evas_aspect_set(Ecore_Evas *ee, double aspect)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
IFC(ee, fn_aspect_set) (ee, aspect);
|
||||||
|
IFE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI double
|
||||||
|
ecore_evas_aspect_get(const Ecore_Evas *ee)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
return ee->prop.aspect;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_evas_urgent_set(Ecore_Evas *ee, Eina_Bool urgent)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
IFC(ee, fn_urgent_set) (ee, urgent);
|
||||||
|
IFE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
ecore_evas_urgent_get(const Ecore_Evas *ee)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
return ee->prop.urgent ? EINA_TRUE : EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_evas_modal_set(Ecore_Evas *ee, Eina_Bool modal)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
IFC(ee, fn_modal_set) (ee, modal);
|
||||||
|
IFE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
ecore_evas_modal_get(const Ecore_Evas *ee)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
return ee->prop.modal ? EINA_TRUE : EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_evas_demand_attention_set(Ecore_Evas *ee, Eina_Bool demand)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
IFC(ee, fn_demands_attention_set) (ee, demand);
|
||||||
|
IFE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
ecore_evas_demand_attention_get(const Ecore_Evas *ee)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
return ee->prop.demand_attention ? EINA_TRUE : EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_evas_focus_skip_set(Ecore_Evas *ee, Eina_Bool skip)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
IFC(ee, fn_focus_skip_set) (ee, skip);
|
||||||
|
IFE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
ecore_evas_focus_skip_get(const Ecore_Evas *ee)
|
||||||
|
{
|
||||||
|
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||||
|
{
|
||||||
|
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||||
|
"XXX");
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
return ee->prop.focus_skip ? EINA_TRUE : EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_evas_ignore_events_set(Ecore_Evas *ee, Eina_Bool ignore)
|
ecore_evas_ignore_events_set(Ecore_Evas *ee, Eina_Bool ignore)
|
||||||
{
|
{
|
||||||
|
|
|
@ -513,6 +513,13 @@ static Ecore_Evas_Engine_Func _ecore_buffer_engine_func =
|
||||||
_ecore_evas_buffer_alpha_set,
|
_ecore_evas_buffer_alpha_set,
|
||||||
NULL, //transparent
|
NULL, //transparent
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
_ecore_evas_buffer_render,
|
_ecore_evas_buffer_render,
|
||||||
NULL // screen_geometry_get
|
NULL // screen_geometry_get
|
||||||
};
|
};
|
||||||
|
|
|
@ -463,6 +463,14 @@ static Ecore_Evas_Engine_Func _ecore_cocoa_engine_func =
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL, //transparent
|
NULL, //transparent
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
NULL, // render
|
NULL, // render
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
|
@ -490,6 +490,13 @@ static Ecore_Evas_Engine_Func _ecore_directfb_engine_func =
|
||||||
NULL, /* alpha */
|
NULL, /* alpha */
|
||||||
NULL, //transparent
|
NULL, //transparent
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
NULL, // render
|
NULL, // render
|
||||||
NULL // screen_geometry_get
|
NULL // screen_geometry_get
|
||||||
};
|
};
|
||||||
|
|
|
@ -683,6 +683,14 @@ static const Ecore_Evas_Engine_Func _ecore_ews_engine_func =
|
||||||
_ecore_evas_ews_ignore_events_set,
|
_ecore_evas_ews_ignore_events_set,
|
||||||
_ecore_evas_ews_alpha_set,
|
_ecore_evas_ews_alpha_set,
|
||||||
_ecore_evas_ews_transparent_set,
|
_ecore_evas_ews_transparent_set,
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
_ecore_evas_ews_render,
|
_ecore_evas_ews_render,
|
||||||
_ecore_evas_ews_screen_geometry_get
|
_ecore_evas_ews_screen_geometry_get
|
||||||
};
|
};
|
||||||
|
|
|
@ -1104,6 +1104,13 @@ static const Ecore_Evas_Engine_Func _ecore_extn_plug_engine_func =
|
||||||
NULL,
|
NULL,
|
||||||
NULL, //transparent
|
NULL, //transparent
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
NULL, // render
|
NULL, // render
|
||||||
NULL // screen_geometry_get
|
NULL // screen_geometry_get
|
||||||
};
|
};
|
||||||
|
@ -1981,6 +1988,14 @@ static const Ecore_Evas_Engine_Func _ecore_extn_socket_engine_func =
|
||||||
_ecore_evas_extn_socket_alpha_set,
|
_ecore_evas_extn_socket_alpha_set,
|
||||||
NULL, //transparent
|
NULL, //transparent
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
_ecore_evas_extn_socket_render, // render
|
_ecore_evas_extn_socket_render, // render
|
||||||
NULL // screen_geometry_get
|
NULL // screen_geometry_get
|
||||||
};
|
};
|
||||||
|
|
|
@ -541,6 +541,13 @@ static Ecore_Evas_Engine_Func _ecore_fb_engine_func =
|
||||||
NULL,
|
NULL,
|
||||||
NULL, //transparent
|
NULL, //transparent
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
NULL, // render
|
NULL, // render
|
||||||
NULL // screen_geometry_get
|
NULL // screen_geometry_get
|
||||||
};
|
};
|
||||||
|
|
|
@ -178,6 +178,13 @@ struct _Ecore_Evas_Engine_Func
|
||||||
void (*fn_alpha_set) (Ecore_Evas *ee, int alpha);
|
void (*fn_alpha_set) (Ecore_Evas *ee, int alpha);
|
||||||
void (*fn_transparent_set) (Ecore_Evas *ee, int transparent);
|
void (*fn_transparent_set) (Ecore_Evas *ee, int transparent);
|
||||||
|
|
||||||
|
void (*fn_window_group_set) (Ecore_Evas *ee, const Ecore_Evas *ee_group);
|
||||||
|
void (*fn_aspect_set) (Ecore_Evas *ee, double aspect);
|
||||||
|
void (*fn_urgent_set) (Ecore_Evas *ee, int urgent);
|
||||||
|
void (*fn_modal_set) (Ecore_Evas *ee, int modal);
|
||||||
|
void (*fn_demands_attention_set) (Ecore_Evas *ee, int demand);
|
||||||
|
void (*fn_focus_skip_set) (Ecore_Evas *ee, int skip);
|
||||||
|
|
||||||
int (*fn_render) (Ecore_Evas *ee);
|
int (*fn_render) (Ecore_Evas *ee);
|
||||||
void (*fn_screen_geometry_get) (const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
|
void (*fn_screen_geometry_get) (const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
|
||||||
};
|
};
|
||||||
|
@ -334,6 +341,9 @@ struct _Ecore_Evas
|
||||||
int layer;
|
int layer;
|
||||||
Ecore_Window window;
|
Ecore_Window window;
|
||||||
unsigned char avoid_damage;
|
unsigned char avoid_damage;
|
||||||
|
Ecore_Evas *group_ee;
|
||||||
|
Ecore_Window group_ee_win;
|
||||||
|
double aspect;
|
||||||
char focused : 1;
|
char focused : 1;
|
||||||
char iconified : 1;
|
char iconified : 1;
|
||||||
char borderless : 1;
|
char borderless : 1;
|
||||||
|
@ -345,7 +355,11 @@ struct _Ecore_Evas
|
||||||
char request_pos : 1;
|
char request_pos : 1;
|
||||||
char draw_frame : 1;
|
char draw_frame : 1;
|
||||||
char hwsurface : 1;
|
char hwsurface : 1;
|
||||||
} prop;
|
char urgent : 1;
|
||||||
|
char modal : 1;
|
||||||
|
char demand_attention : 1;
|
||||||
|
char focus_skip : 1;
|
||||||
|
} prop;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
void (*fn_resize) (Ecore_Evas *ee);
|
void (*fn_resize) (Ecore_Evas *ee);
|
||||||
|
@ -363,6 +377,7 @@ struct _Ecore_Evas
|
||||||
void (*fn_pre_render) (Ecore_Evas *ee);
|
void (*fn_pre_render) (Ecore_Evas *ee);
|
||||||
void (*fn_post_render) (Ecore_Evas *ee);
|
void (*fn_post_render) (Ecore_Evas *ee);
|
||||||
void (*fn_pre_free) (Ecore_Evas *ee);
|
void (*fn_pre_free) (Ecore_Evas *ee);
|
||||||
|
void (*fn_state_change) (Ecore_Evas *ee);
|
||||||
} func;
|
} func;
|
||||||
|
|
||||||
Ecore_Evas_Engine engine;
|
Ecore_Evas_Engine engine;
|
||||||
|
|
|
@ -396,6 +396,13 @@ static Ecore_Evas_Engine_Func _ecore_psl1ght_engine_func =
|
||||||
NULL,
|
NULL,
|
||||||
NULL, //transparent
|
NULL, //transparent
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
NULL, // render
|
NULL, // render
|
||||||
_ecore_evas_screen_geometry_get // screen_geometry_get
|
_ecore_evas_screen_geometry_get // screen_geometry_get
|
||||||
};
|
};
|
||||||
|
|
|
@ -433,6 +433,13 @@ static Ecore_Evas_Engine_Func _ecore_sdl_engine_func =
|
||||||
NULL,
|
NULL,
|
||||||
NULL, //transparent
|
NULL, //transparent
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
NULL, // render
|
NULL, // render
|
||||||
NULL // screen_geometry_get
|
NULL // screen_geometry_get
|
||||||
};
|
};
|
||||||
|
|
|
@ -152,6 +152,14 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func =
|
||||||
NULL, // func ignore events set
|
NULL, // func ignore events set
|
||||||
NULL, // func alpha set
|
NULL, // func alpha set
|
||||||
NULL, // func transparent set
|
NULL, // func transparent set
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
_ecore_evas_wl_render,
|
_ecore_evas_wl_render,
|
||||||
_ecore_evas_wl_screen_geometry_get
|
_ecore_evas_wl_screen_geometry_get
|
||||||
};
|
};
|
||||||
|
|
|
@ -153,6 +153,14 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func =
|
||||||
NULL, // func ignore_events set
|
NULL, // func ignore_events set
|
||||||
NULL, // func alpha set
|
NULL, // func alpha set
|
||||||
NULL, // func transparent set
|
NULL, // func transparent set
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
_ecore_evas_wl_render,
|
_ecore_evas_wl_render,
|
||||||
_ecore_evas_wl_screen_geometry_get
|
_ecore_evas_wl_screen_geometry_get
|
||||||
};
|
};
|
||||||
|
|
|
@ -982,6 +982,13 @@ static Ecore_Evas_Engine_Func _ecore_win32_engine_func =
|
||||||
NULL, /* _ecore_evas_x_alpha_set */
|
NULL, /* _ecore_evas_x_alpha_set */
|
||||||
NULL, //transparent
|
NULL, //transparent
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
NULL, // render
|
NULL, // render
|
||||||
NULL //screen_geometry_get
|
NULL //screen_geometry_get
|
||||||
};
|
};
|
||||||
|
|
|
@ -773,6 +773,13 @@ static Ecore_Evas_Engine_Func _ecore_wince_engine_func =
|
||||||
NULL, /* _ecore_evas_x_alpha_set */
|
NULL, /* _ecore_evas_x_alpha_set */
|
||||||
NULL, //transparent
|
NULL, //transparent
|
||||||
|
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
|
||||||
NULL, // render
|
NULL, // render
|
||||||
NULL // screen_geometry_get
|
NULL // screen_geometry_get
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,6 +19,22 @@ static Ecore_Event_Handler *ecore_evas_event_handlers[13];
|
||||||
static int leader_ref = 0;
|
static int leader_ref = 0;
|
||||||
static Ecore_X_Window leader_win = 0;
|
static Ecore_X_Window leader_win = 0;
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ecore_evas_x_hints_update(Ecore_Evas *ee)
|
||||||
|
{
|
||||||
|
ecore_x_icccm_hints_set
|
||||||
|
(ee->prop.window,
|
||||||
|
!ee->prop.focus_skip /* accepts_focus */,
|
||||||
|
ee->prop.iconified ? ECORE_X_WINDOW_STATE_HINT_ICONIC :
|
||||||
|
ee->prop.withdrawn ? ECORE_X_WINDOW_STATE_HINT_WITHDRAWN :
|
||||||
|
ECORE_X_WINDOW_STATE_HINT_NORMAL /* initial_state */,
|
||||||
|
0 /* icon_pixmap */,
|
||||||
|
0 /* icon_mask */,
|
||||||
|
0 /* icon_window */,
|
||||||
|
ee->prop.group_ee_win /* window_group */,
|
||||||
|
ee->prop.urgent /* is_urgent */);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ecore_evas_x_group_leader_set(Ecore_Evas *ee)
|
_ecore_evas_x_group_leader_set(Ecore_Evas *ee)
|
||||||
{
|
{
|
||||||
|
@ -537,6 +553,7 @@ _ecore_evas_x_event_property_change(void *data __UNUSED__, int type __UNUSED__,
|
||||||
{
|
{
|
||||||
Ecore_Evas *ee;
|
Ecore_Evas *ee;
|
||||||
Ecore_X_Event_Window_Property *e;
|
Ecore_X_Event_Window_Property *e;
|
||||||
|
int state_change = 0;
|
||||||
|
|
||||||
e = event;
|
e = event;
|
||||||
ee = ecore_event_window_match(e->win);
|
ee = ecore_event_window_match(e->win);
|
||||||
|
@ -546,7 +563,6 @@ _ecore_evas_x_event_property_change(void *data __UNUSED__, int type __UNUSED__,
|
||||||
{
|
{
|
||||||
unsigned int i, num;
|
unsigned int i, num;
|
||||||
Ecore_X_Window_State *state;
|
Ecore_X_Window_State *state;
|
||||||
int sticky = 0;
|
|
||||||
|
|
||||||
/* TODO: we need to move those to the end, with if statements */
|
/* TODO: we need to move those to the end, with if statements */
|
||||||
ee->engine.x.state.modal = 0;
|
ee->engine.x.state.modal = 0;
|
||||||
|
@ -560,6 +576,9 @@ _ecore_evas_x_event_property_change(void *data __UNUSED__, int type __UNUSED__,
|
||||||
ee->engine.x.state.above = 0;
|
ee->engine.x.state.above = 0;
|
||||||
ee->engine.x.state.below = 0;
|
ee->engine.x.state.below = 0;
|
||||||
|
|
||||||
|
// XXXXXXXXXXXXXXXXXx fixme... handle state change flag properly
|
||||||
|
state_change = 1;
|
||||||
|
|
||||||
ecore_x_netwm_window_state_get(e->win, &state, &num);
|
ecore_x_netwm_window_state_get(e->win, &state, &num);
|
||||||
if (state)
|
if (state)
|
||||||
{
|
{
|
||||||
|
@ -568,56 +587,75 @@ _ecore_evas_x_event_property_change(void *data __UNUSED__, int type __UNUSED__,
|
||||||
switch (state[i])
|
switch (state[i])
|
||||||
{
|
{
|
||||||
case ECORE_X_WINDOW_STATE_MODAL:
|
case ECORE_X_WINDOW_STATE_MODAL:
|
||||||
ee->engine.x.state.modal = 1;
|
ee->engine.x.state.modal = 1;
|
||||||
break;
|
break;
|
||||||
case ECORE_X_WINDOW_STATE_STICKY:
|
case ECORE_X_WINDOW_STATE_STICKY:
|
||||||
if (ee->prop.sticky && ee->engine.x.state.sticky)
|
ee->prop.sticky = 1;
|
||||||
break;
|
ee->engine.x.state.sticky = 1;
|
||||||
|
break;
|
||||||
sticky = 1;
|
|
||||||
ee->prop.sticky = 1;
|
|
||||||
ee->engine.x.state.sticky = 1;
|
|
||||||
if (ee->func.fn_sticky) ee->func.fn_sticky(ee);
|
|
||||||
break;
|
|
||||||
case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
|
case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
|
||||||
ee->engine.x.state.maximized_v = 1;
|
ee->engine.x.state.maximized_v = 1;
|
||||||
break;
|
break;
|
||||||
case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
|
case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
|
||||||
ee->engine.x.state.maximized_h = 1;
|
ee->engine.x.state.maximized_h = 1;
|
||||||
break;
|
break;
|
||||||
case ECORE_X_WINDOW_STATE_SHADED:
|
case ECORE_X_WINDOW_STATE_SHADED:
|
||||||
ee->engine.x.state.shaded = 1;
|
ee->engine.x.state.shaded = 1;
|
||||||
break;
|
break;
|
||||||
case ECORE_X_WINDOW_STATE_SKIP_TASKBAR:
|
case ECORE_X_WINDOW_STATE_SKIP_TASKBAR:
|
||||||
ee->engine.x.state.skip_taskbar = 1;
|
ee->engine.x.state.skip_taskbar = 1;
|
||||||
break;
|
break;
|
||||||
case ECORE_X_WINDOW_STATE_SKIP_PAGER:
|
case ECORE_X_WINDOW_STATE_SKIP_PAGER:
|
||||||
ee->engine.x.state.skip_pager = 1;
|
ee->engine.x.state.skip_pager = 1;
|
||||||
break;
|
break;
|
||||||
case ECORE_X_WINDOW_STATE_FULLSCREEN:
|
case ECORE_X_WINDOW_STATE_FULLSCREEN:
|
||||||
ee->prop.fullscreen = 1;
|
ee->prop.fullscreen = 1;
|
||||||
ee->engine.x.state.fullscreen = 1;
|
ee->engine.x.state.fullscreen = 1;
|
||||||
break;
|
break;
|
||||||
case ECORE_X_WINDOW_STATE_ABOVE:
|
case ECORE_X_WINDOW_STATE_ABOVE:
|
||||||
ee->engine.x.state.above = 1;
|
ee->engine.x.state.above = 1;
|
||||||
break;
|
break;
|
||||||
case ECORE_X_WINDOW_STATE_BELOW:
|
case ECORE_X_WINDOW_STATE_BELOW:
|
||||||
ee->engine.x.state.below = 1;
|
ee->engine.x.state.below = 1;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(state);
|
free(state);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else if (e->atom == ECORE_X_ATOM_WM_STATE)
|
||||||
|
{
|
||||||
|
Ecore_X_Window_State_Hint state;
|
||||||
|
|
||||||
if ((ee->prop.sticky) && (!sticky))
|
// handle WM_STATE changes
|
||||||
|
state = ecore_x_icccm_state_get(e->win);
|
||||||
|
switch (state)
|
||||||
{
|
{
|
||||||
ee->prop.sticky = 0;
|
case ECORE_X_WINDOW_STATE_HINT_WITHDRAWN:
|
||||||
ee->engine.x.state.sticky = 0;
|
case ECORE_X_WINDOW_STATE_HINT_ICONIC:
|
||||||
if (ee->func.fn_unsticky) ee->func.fn_unsticky(ee);
|
if (!ee->prop.iconified)
|
||||||
|
{
|
||||||
|
state_change = 1;
|
||||||
|
ee->prop.iconified = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ECORE_X_WINDOW_STATE_HINT_NORMAL:
|
||||||
|
if (ee->prop.iconified)
|
||||||
|
{
|
||||||
|
state_change = 1;
|
||||||
|
ee->prop.iconified = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (state_change)
|
||||||
|
{
|
||||||
|
if (ee->func.fn_state_change) ee->func.fn_state_change(ee);
|
||||||
|
}
|
||||||
|
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
@ -1078,8 +1116,8 @@ _ecore_evas_x_size_pos_hints_update(Ecore_Evas *ee)
|
||||||
ee->prop.base.h /* base_h */,
|
ee->prop.base.h /* base_h */,
|
||||||
ee->prop.step.w /* step_x */,
|
ee->prop.step.w /* step_x */,
|
||||||
ee->prop.step.h /* step_y */,
|
ee->prop.step.h /* step_y */,
|
||||||
0 /* min_aspect */,
|
ee->prop.aspect /* min_aspect */,
|
||||||
0 /* max_aspect */);
|
ee->prop.aspect /* max_aspect */);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME, should be in idler */
|
/* FIXME, should be in idler */
|
||||||
|
@ -1089,32 +1127,30 @@ _ecore_evas_x_state_update(Ecore_Evas *ee)
|
||||||
Ecore_X_Window_State state[10];
|
Ecore_X_Window_State state[10];
|
||||||
int num = 0;
|
int num = 0;
|
||||||
|
|
||||||
/*
|
if (ee->prop.modal)
|
||||||
if (bd->client.netwm.state.modal)
|
|
||||||
state[num++] = ECORE_X_WINDOW_STATE_MODAL;
|
state[num++] = ECORE_X_WINDOW_STATE_MODAL;
|
||||||
*/
|
if (ee->prop.sticky)
|
||||||
if (ee->engine.x.state.sticky)
|
|
||||||
state[num++] = ECORE_X_WINDOW_STATE_STICKY;
|
state[num++] = ECORE_X_WINDOW_STATE_STICKY;
|
||||||
/*
|
if (ee->prop.maximized)
|
||||||
if (bd->client.netwm.state.maximized_v)
|
|
||||||
state[num++] = ECORE_X_WINDOW_STATE_MAXIMIZED_VERT;
|
state[num++] = ECORE_X_WINDOW_STATE_MAXIMIZED_VERT;
|
||||||
if (bd->client.netwm.state.maximized_h)
|
if (ee->prop.maximized)
|
||||||
state[num++] = ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ;
|
state[num++] = ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ;
|
||||||
if (bd->client.netwm.state.shaded)
|
// if (bd->client.netwm.state.shaded)
|
||||||
state[num++] = ECORE_X_WINDOW_STATE_SHADED;
|
// state[num++] = ECORE_X_WINDOW_STATE_SHADED;
|
||||||
if (bd->client.netwm.state.skip_taskbar)
|
if (ee->prop.focus_skip)
|
||||||
state[num++] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR;
|
state[num++] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR;
|
||||||
if (bd->client.netwm.state.skip_pager)
|
if (ee->prop.focus_skip)
|
||||||
state[num++] = ECORE_X_WINDOW_STATE_SKIP_PAGER;
|
state[num++] = ECORE_X_WINDOW_STATE_SKIP_PAGER;
|
||||||
if (bd->client.netwm.state.hidden)
|
// if (bd->client.netwm.state.hidden)
|
||||||
state[num++] = ECORE_X_WINDOW_STATE_HIDDEN;
|
// state[num++] = ECORE_X_WINDOW_STATE_HIDDEN;
|
||||||
*/
|
|
||||||
if (ee->engine.x.state.fullscreen)
|
if (ee->engine.x.state.fullscreen)
|
||||||
state[num++] = ECORE_X_WINDOW_STATE_FULLSCREEN;
|
state[num++] = ECORE_X_WINDOW_STATE_FULLSCREEN;
|
||||||
if (ee->engine.x.state.above)
|
if (ee->engine.x.state.above)
|
||||||
state[num++] = ECORE_X_WINDOW_STATE_ABOVE;
|
state[num++] = ECORE_X_WINDOW_STATE_ABOVE;
|
||||||
if (ee->engine.x.state.below)
|
if (ee->engine.x.state.below)
|
||||||
state[num++] = ECORE_X_WINDOW_STATE_BELOW;
|
state[num++] = ECORE_X_WINDOW_STATE_BELOW;
|
||||||
|
if (ee->prop.demand_attention)
|
||||||
|
state[num++] = ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION;
|
||||||
|
|
||||||
ecore_x_netwm_window_state_set(ee->prop.window, state, num);
|
ecore_x_netwm_window_state_set(ee->prop.window, state, num);
|
||||||
}
|
}
|
||||||
|
@ -1839,14 +1875,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
|
||||||
ecore_x_icccm_title_set(ee->prop.window, ee->prop.title);
|
ecore_x_icccm_title_set(ee->prop.window, ee->prop.title);
|
||||||
ecore_x_netwm_name_set(ee->prop.window, ee->prop.title);
|
ecore_x_netwm_name_set(ee->prop.window, ee->prop.title);
|
||||||
}
|
}
|
||||||
ecore_x_icccm_hints_set(ee->prop.window,
|
_ecore_evas_x_hints_update(ee);
|
||||||
1 /* accepts_focus */,
|
|
||||||
ECORE_X_WINDOW_STATE_HINT_NORMAL /* initial_state */,
|
|
||||||
0 /* icon_pixmap */,
|
|
||||||
0 /* icon_mask */,
|
|
||||||
0 /* icon_window */,
|
|
||||||
0 /* window_group */,
|
|
||||||
0 /* is_urgent */);
|
|
||||||
_ecore_evas_x_group_leader_update(ee);
|
_ecore_evas_x_group_leader_update(ee);
|
||||||
ecore_x_window_defaults_set(ee->prop.window);
|
ecore_x_window_defaults_set(ee->prop.window);
|
||||||
_ecore_evas_x_protocols_set(ee);
|
_ecore_evas_x_protocols_set(ee);
|
||||||
|
@ -1962,14 +1991,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
|
||||||
ecore_x_icccm_title_set(ee->prop.window, ee->prop.title);
|
ecore_x_icccm_title_set(ee->prop.window, ee->prop.title);
|
||||||
ecore_x_netwm_name_set(ee->prop.window, ee->prop.title);
|
ecore_x_netwm_name_set(ee->prop.window, ee->prop.title);
|
||||||
}
|
}
|
||||||
ecore_x_icccm_hints_set(ee->prop.window,
|
_ecore_evas_x_hints_update(ee);
|
||||||
1 /* accepts_focus */,
|
|
||||||
ECORE_X_WINDOW_STATE_HINT_NORMAL /* initial_state */,
|
|
||||||
0 /* icon_pixmap */,
|
|
||||||
0 /* icon_mask */,
|
|
||||||
0 /* icon_window */,
|
|
||||||
0 /* window_group */,
|
|
||||||
0 /* is_urgent */);
|
|
||||||
_ecore_evas_x_group_leader_update(ee);
|
_ecore_evas_x_group_leader_update(ee);
|
||||||
ecore_x_window_defaults_set(ee->prop.window);
|
ecore_x_window_defaults_set(ee->prop.window);
|
||||||
_ecore_evas_x_protocols_set(ee);
|
_ecore_evas_x_protocols_set(ee);
|
||||||
|
@ -2048,14 +2070,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
|
||||||
ecore_x_icccm_title_set(ee->prop.window, ee->prop.title);
|
ecore_x_icccm_title_set(ee->prop.window, ee->prop.title);
|
||||||
ecore_x_netwm_name_set(ee->prop.window, ee->prop.title);
|
ecore_x_netwm_name_set(ee->prop.window, ee->prop.title);
|
||||||
}
|
}
|
||||||
ecore_x_icccm_hints_set(ee->prop.window,
|
_ecore_evas_x_hints_update(ee);
|
||||||
1 /* accepts_focus */,
|
|
||||||
ECORE_X_WINDOW_STATE_HINT_NORMAL /* initial_state */,
|
|
||||||
0 /* icon_pixmap */,
|
|
||||||
0 /* icon_mask */,
|
|
||||||
0 /* icon_window */,
|
|
||||||
0 /* window_group */,
|
|
||||||
0 /* is_urgent */);
|
|
||||||
_ecore_evas_x_group_leader_update(ee);
|
_ecore_evas_x_group_leader_update(ee);
|
||||||
ecore_x_window_defaults_set(ee->prop.window);
|
ecore_x_window_defaults_set(ee->prop.window);
|
||||||
_ecore_evas_x_protocols_set(ee);
|
_ecore_evas_x_protocols_set(ee);
|
||||||
|
@ -2134,14 +2149,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
|
||||||
ecore_x_icccm_title_set(ee->prop.window, ee->prop.title);
|
ecore_x_icccm_title_set(ee->prop.window, ee->prop.title);
|
||||||
ecore_x_netwm_name_set(ee->prop.window, ee->prop.title);
|
ecore_x_netwm_name_set(ee->prop.window, ee->prop.title);
|
||||||
}
|
}
|
||||||
ecore_x_icccm_hints_set(ee->prop.window,
|
_ecore_evas_x_hints_update(ee);
|
||||||
1 /* accepts_focus */,
|
|
||||||
ECORE_X_WINDOW_STATE_HINT_NORMAL /* initial_state */,
|
|
||||||
0 /* icon_pixmap */,
|
|
||||||
0 /* icon_mask */,
|
|
||||||
0 /* icon_window */,
|
|
||||||
0 /* window_group */,
|
|
||||||
0 /* is_urgent */);
|
|
||||||
_ecore_evas_x_group_leader_update(ee);
|
_ecore_evas_x_group_leader_update(ee);
|
||||||
ecore_x_window_defaults_set(ee->prop.window);
|
ecore_x_window_defaults_set(ee->prop.window);
|
||||||
_ecore_evas_x_protocols_set(ee);
|
_ecore_evas_x_protocols_set(ee);
|
||||||
|
@ -2182,6 +2190,88 @@ _ecore_evas_x_transparent_set(Ecore_Evas *ee, int transparent)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ecore_evas_x_window_group_set(Ecore_Evas *ee, const Ecore_Evas *group_ee)
|
||||||
|
{
|
||||||
|
if (ee->prop.group_ee == group_ee) return;
|
||||||
|
|
||||||
|
ee->prop.group_ee = (Ecore_Evas *)group_ee;
|
||||||
|
if (ee->prop.group_ee)
|
||||||
|
ee->prop.group_ee_win = group_ee->prop.window;
|
||||||
|
else
|
||||||
|
ee->prop.group_ee_win = 0;
|
||||||
|
_ecore_evas_x_hints_update(ee);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ecore_evas_x_aspect_set(Ecore_Evas *ee, double aspect)
|
||||||
|
{
|
||||||
|
if (ee->prop.aspect == aspect) return;
|
||||||
|
|
||||||
|
ee->prop.aspect = aspect;
|
||||||
|
_ecore_evas_x_size_pos_hints_update(ee);
|
||||||
|
// netwm state
|
||||||
|
// if (ee->should_be_visible)
|
||||||
|
// ecore_x_netwm_state_request_send(ee->prop.window, ee->engine.x.win_root,
|
||||||
|
// ECORE_X_WINDOW_STATE_STICKY, -1, sticky);
|
||||||
|
// else
|
||||||
|
// _ecore_evas_x_state_update(ee);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ecore_evas_x_urgent_set(Ecore_Evas *ee, int urgent)
|
||||||
|
{
|
||||||
|
if (ee->prop.urgent == urgent) return;
|
||||||
|
|
||||||
|
ee->prop.urgent = urgent;
|
||||||
|
_ecore_evas_x_hints_update(ee);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ecore_evas_x_modal_set(Ecore_Evas *ee, int modal)
|
||||||
|
{
|
||||||
|
if (ee->prop.modal == modal) return;
|
||||||
|
|
||||||
|
ee->prop.modal = modal;
|
||||||
|
if (ee->should_be_visible)
|
||||||
|
ecore_x_netwm_state_request_send(ee->prop.window, ee->engine.x.win_root,
|
||||||
|
ECORE_X_WINDOW_STATE_MODAL, -1, modal);
|
||||||
|
else
|
||||||
|
_ecore_evas_x_state_update(ee);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ecore_evas_x_demand_attention_set(Ecore_Evas *ee, int demand)
|
||||||
|
{
|
||||||
|
if (ee->prop.demand_attention == demand) return;
|
||||||
|
|
||||||
|
ee->prop.demand_attention = demand;
|
||||||
|
if (ee->should_be_visible)
|
||||||
|
ecore_x_netwm_state_request_send(ee->prop.window, ee->engine.x.win_root,
|
||||||
|
ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION, -1, demand);
|
||||||
|
else
|
||||||
|
_ecore_evas_x_state_update(ee);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ecore_evas_x_focus_skip_set(Ecore_Evas *ee, int skip)
|
||||||
|
{
|
||||||
|
if (ee->prop.focus_skip == skip) return;
|
||||||
|
|
||||||
|
ee->prop.focus_skip = skip;
|
||||||
|
if (ee->should_be_visible)
|
||||||
|
{
|
||||||
|
ecore_x_netwm_state_request_send(ee->prop.window, ee->engine.x.win_root,
|
||||||
|
ECORE_X_WINDOW_STATE_SKIP_TASKBAR, -1, !skip);
|
||||||
|
ecore_x_netwm_state_request_send(ee->prop.window, ee->engine.x.win_root,
|
||||||
|
ECORE_X_WINDOW_STATE_SKIP_PAGER, -1, !skip);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_ecore_evas_x_state_update(ee);
|
||||||
|
_ecore_evas_x_hints_update(ee);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* BUILD_ECORE_EVAS_X11 */
|
#endif /* BUILD_ECORE_EVAS_X11 */
|
||||||
|
|
||||||
#ifdef BUILD_ECORE_EVAS_X11
|
#ifdef BUILD_ECORE_EVAS_X11
|
||||||
|
@ -2369,30 +2459,11 @@ _ecore_evas_x_iconified_set(Ecore_Evas *ee, int on)
|
||||||
{
|
{
|
||||||
if (ee->prop.iconified == on) return;
|
if (ee->prop.iconified == on) return;
|
||||||
ee->prop.iconified = on;
|
ee->prop.iconified = on;
|
||||||
|
_ecore_evas_x_hints_update(ee);
|
||||||
if (on)
|
if (on)
|
||||||
{
|
ecore_x_icccm_iconic_request_send(ee->prop.window, ee->engine.x.win_root);
|
||||||
ecore_x_icccm_hints_set(ee->prop.window,
|
|
||||||
1 /* accepts_focus */,
|
|
||||||
ECORE_X_WINDOW_STATE_HINT_ICONIC /* initial_state */,
|
|
||||||
0 /* icon_pixmap */,
|
|
||||||
0 /* icon_mask */,
|
|
||||||
0 /* icon_window */,
|
|
||||||
0 /* window_group */,
|
|
||||||
0 /* is_urgent */);
|
|
||||||
ecore_x_icccm_iconic_request_send(ee->prop.window, ee->engine.x.win_root);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
ecore_evas_show(ee);
|
||||||
ecore_x_icccm_hints_set(ee->prop.window,
|
|
||||||
1 /* accepts_focus */,
|
|
||||||
ECORE_X_WINDOW_STATE_HINT_NORMAL /* initial_state */,
|
|
||||||
0 /* icon_pixmap */,
|
|
||||||
0 /* icon_mask */,
|
|
||||||
0 /* icon_window */,
|
|
||||||
0 /* window_group */,
|
|
||||||
0 /* is_urgent */);
|
|
||||||
ecore_evas_show(ee);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -2408,24 +2479,9 @@ _ecore_evas_x_borderless_set(Ecore_Evas *ee, int on)
|
||||||
static void
|
static void
|
||||||
_ecore_evas_x_withdrawn_set(Ecore_Evas *ee, int withdrawn)
|
_ecore_evas_x_withdrawn_set(Ecore_Evas *ee, int withdrawn)
|
||||||
{
|
{
|
||||||
Ecore_X_Window_State_Hint hint;
|
|
||||||
|
|
||||||
if (ee->prop.withdrawn == withdrawn) return;
|
if (ee->prop.withdrawn == withdrawn) return;
|
||||||
|
|
||||||
ee->prop.withdrawn = withdrawn;
|
ee->prop.withdrawn = withdrawn;
|
||||||
if (withdrawn)
|
_ecore_evas_x_hints_update(ee);
|
||||||
hint = ECORE_X_WINDOW_STATE_HINT_WITHDRAWN;
|
|
||||||
else
|
|
||||||
hint = ECORE_X_WINDOW_STATE_HINT_NORMAL;
|
|
||||||
|
|
||||||
ecore_x_icccm_hints_set(ee->prop.window,
|
|
||||||
1 /* accepts_focus */,
|
|
||||||
hint /* initial_state */,
|
|
||||||
0 /* icon_pixmap */,
|
|
||||||
0 /* icon_mask */,
|
|
||||||
0 /* icon_window */,
|
|
||||||
0 /* window_group */,
|
|
||||||
0 /* is_urgent */);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -2763,6 +2819,13 @@ static Ecore_Evas_Engine_Func _ecore_x_engine_func =
|
||||||
_ecore_evas_x_alpha_set,
|
_ecore_evas_x_alpha_set,
|
||||||
_ecore_evas_x_transparent_set,
|
_ecore_evas_x_transparent_set,
|
||||||
|
|
||||||
|
_ecore_evas_x_window_group_set,
|
||||||
|
_ecore_evas_x_aspect_set,
|
||||||
|
_ecore_evas_x_urgent_set,
|
||||||
|
_ecore_evas_x_modal_set,
|
||||||
|
_ecore_evas_x_demand_attention_set,
|
||||||
|
_ecore_evas_x_focus_skip_set,
|
||||||
|
|
||||||
NULL, // render
|
NULL, // render
|
||||||
_ecore_evas_x_screen_geometry_get
|
_ecore_evas_x_screen_geometry_get
|
||||||
};
|
};
|
||||||
|
@ -3003,14 +3066,7 @@ ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ecore_x_icccm_hints_set(ee->prop.window,
|
_ecore_evas_x_hints_update(ee);
|
||||||
1 /* accepts_focus */,
|
|
||||||
ECORE_X_WINDOW_STATE_HINT_NORMAL /* initial_state */,
|
|
||||||
0 /* icon_pixmap */,
|
|
||||||
0 /* icon_mask */,
|
|
||||||
0 /* icon_window */,
|
|
||||||
0 /* window_group */,
|
|
||||||
0 /* is_urgent */);
|
|
||||||
_ecore_evas_x_group_leader_set(ee);
|
_ecore_evas_x_group_leader_set(ee);
|
||||||
ecore_x_window_defaults_set(ee->prop.window);
|
ecore_x_window_defaults_set(ee->prop.window);
|
||||||
_ecore_evas_x_protocols_set(ee);
|
_ecore_evas_x_protocols_set(ee);
|
||||||
|
@ -3240,14 +3296,7 @@ ecore_evas_gl_x11_options_new(const char *disp_name, Ecore_X_Window parent,
|
||||||
// putenv((char*)"DESKTOP_STARTUP_ID=");
|
// putenv((char*)"DESKTOP_STARTUP_ID=");
|
||||||
}
|
}
|
||||||
|
|
||||||
ecore_x_icccm_hints_set(ee->prop.window,
|
_ecore_evas_x_hints_update(ee);
|
||||||
1 /* accepts_focus */,
|
|
||||||
ECORE_X_WINDOW_STATE_HINT_NORMAL /* initial_state */,
|
|
||||||
0 /* icon_pixmap */,
|
|
||||||
0 /* icon_mask */,
|
|
||||||
0 /* icon_window */,
|
|
||||||
0 /* window_group */,
|
|
||||||
0 /* is_urgent */);
|
|
||||||
_ecore_evas_x_group_leader_set(ee);
|
_ecore_evas_x_group_leader_set(ee);
|
||||||
ecore_x_window_defaults_set(ee->prop.window);
|
ecore_x_window_defaults_set(ee->prop.window);
|
||||||
_ecore_evas_x_protocols_set(ee);
|
_ecore_evas_x_protocols_set(ee);
|
||||||
|
@ -3571,14 +3620,7 @@ ecore_evas_software_x11_16_new(const char *disp_name, Ecore_X_Window parent,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ecore_x_icccm_hints_set(ee->prop.window,
|
_ecore_evas_x_hints_update(ee);
|
||||||
1 /* accepts_focus */,
|
|
||||||
ECORE_X_WINDOW_STATE_HINT_NORMAL /* initial_state */,
|
|
||||||
0 /* icon_pixmap */,
|
|
||||||
0 /* icon_mask */,
|
|
||||||
0 /* icon_window */,
|
|
||||||
0 /* window_group */,
|
|
||||||
0 /* is_urgent */);
|
|
||||||
_ecore_evas_x_group_leader_set(ee);
|
_ecore_evas_x_group_leader_set(ee);
|
||||||
ecore_x_window_defaults_set(ee->prop.window);
|
ecore_x_window_defaults_set(ee->prop.window);
|
||||||
_ecore_evas_x_protocols_set(ee);
|
_ecore_evas_x_protocols_set(ee);
|
||||||
|
@ -3895,14 +3937,7 @@ ecore_evas_software_x11_8_new(const char *disp_name, Ecore_X_Window parent,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ecore_x_icccm_hints_set(ee->prop.window,
|
_ecore_evas_x_hints_update(ee);
|
||||||
1 /* accepts_focus */,
|
|
||||||
ECORE_X_WINDOW_STATE_HINT_NORMAL /* initial_state */,
|
|
||||||
0 /* icon_pixmap */,
|
|
||||||
0 /* icon_mask */,
|
|
||||||
0 /* icon_window */,
|
|
||||||
0 /* window_group */,
|
|
||||||
0 /* is_urgent */);
|
|
||||||
_ecore_evas_x_group_leader_set(ee);
|
_ecore_evas_x_group_leader_set(ee);
|
||||||
ecore_x_window_defaults_set(ee->prop.window);
|
ecore_x_window_defaults_set(ee->prop.window);
|
||||||
_ecore_evas_x_protocols_set(ee);
|
_ecore_evas_x_protocols_set(ee);
|
||||||
|
|
Loading…
Reference in New Issue