summaryrefslogtreecommitdiff
path: root/src/appcore-efl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/appcore-efl.c')
-rw-r--r--src/appcore-efl.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/appcore-efl.c b/src/appcore-efl.c
index e98b32b..0091c3d 100644
--- a/src/appcore-efl.c
+++ b/src/appcore-efl.c
@@ -65,6 +65,7 @@ struct ui_priv {
Ecore_Event_Handler *hvchange;
#if defined(WAYLAND)
Ecore_Event_Handler *hlower;
+ Ecore_Event_Handler *hpvchange;
#endif
Ecore_Event_Handler *hcmsg; /* WM_ROTATE */
@@ -887,6 +888,27 @@ static Eina_Bool __visibility_cb(void *data, int type, void *event)
}
+#if defined(WAYLAND)
+static Eina_Bool __pre_visibility_cb(void *data, int type, void *event)
+{
+ Ecore_Wl_Event_Window_Pre_Visibility_Change *ev = event;
+ bool bvisibility;
+
+ if (ev && ev->type == ECORE_WL_WINDOW_VISIBILITY_TYPE_PRE_UNOBSCURED) {
+ __update_win((unsigned int)ev->win, 0, false);
+ bvisibility = __check_visible();
+ _DBG("bvisibility %d, b_active %d", bvisibility, b_active);
+ if (bvisibility && b_active == FALSE) {
+ _DBG("Go to Resume state\n");
+ b_active = TRUE;
+ __do_app(AE_RESUME, data, NULL);
+ }
+ }
+
+ return ECORE_CALLBACK_RENEW;
+}
+#endif
+
#if defined(X11)
/* WM_ROTATE */
static Eina_Bool __cmsg_cb(void *data, int type, void *event)
@@ -950,6 +972,8 @@ static void __add_climsg_cb(struct ui_priv *ui)
ui->hlower =
ecore_event_handler_add(ECORE_WL_EVENT_WINDOW_LOWER,
__lower_cb, ui);
+ ui->hpvchange = ecore_event_handler_add(ECORE_WL_EVENT_WINDOW_PRE_VISIBILITY_CHANGE,
+ __pre_visibility_cb, ui);
#elif defined(X11)
ui->hshow =
ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHOW, __show_cb, ui);
@@ -1080,6 +1104,8 @@ static void __after_loop(struct ui_priv *ui)
#if defined(WAYLAND)
if (ui->hlower)
ecore_event_handler_del(ui->hlower);
+ if (ui->hpvchange)
+ ecore_event_handler_del(ui->hpvchange);
#endif
__appcore_timer_del(ui);