summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bin/e_comp_wl.c28
-rw-r--r--src/bin/e_comp_wl.h1
2 files changed, 28 insertions, 1 deletions
diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 1c0bdccd5..81e9c804a 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -84,7 +84,7 @@ _e_comp_wl_surface_outputs_update(E_Client *ec)
84 E_Zone *zone; 84 E_Zone *zone;
85 int32_t obits = 0; 85 int32_t obits = 0;
86 86
87 if (ec->visible) 87 if (ec->visible && (ec->comp_data->force_visible || (!ec->iconic)))
88 EINA_LIST_FOREACH(e_comp->zones, l, zone) 88 EINA_LIST_FOREACH(e_comp->zones, l, zone)
89 if (E_INTERSECTS(zone->x, zone->y, zone->w, zone->h, 89 if (E_INTERSECTS(zone->x, zone->y, zone->w, zone->h,
90 ec->x, ec->y, ec->w, ec->h)) obits |= 1 << zone->id; 90 ec->x, ec->y, ec->w, ec->h)) obits |= 1 << zone->id;
@@ -1015,6 +1015,28 @@ _e_comp_wl_buffer_cb_destroy(struct wl_listener *listener, void *data EINA_UNUSE
1015} 1015}
1016 1016
1017static void 1017static void
1018_e_comp_wl_evas_mirror_hidden(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1019{
1020 E_Client *ec = data;
1021
1022 if (e_object_is_del(data)) return;
1023 ec->comp_data->force_visible = 0;
1024 if (!ec->iconic) return;
1025 _e_comp_wl_surface_outputs_update(ec);
1026}
1027
1028static void
1029_e_comp_wl_evas_mirror_visible(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
1030{
1031 E_Client *ec = data;
1032
1033 if (e_object_is_del(data)) return;
1034 ec->comp_data->force_visible = 1;
1035 if (!ec->iconic) return;
1036 _e_comp_wl_surface_outputs_update(ec);
1037}
1038
1039static void
1018_e_comp_wl_client_evas_init(E_Client *ec) 1040_e_comp_wl_client_evas_init(E_Client *ec)
1019{ 1041{
1020 if (ec->comp_data->evas_init) return; 1042 if (ec->comp_data->evas_init) return;
@@ -1081,6 +1103,10 @@ _e_comp_wl_client_evas_init(E_Client *ec)
1081 _e_comp_wl_evas_cb_maximize_done, ec); 1103 _e_comp_wl_evas_cb_maximize_done, ec);
1082 evas_object_smart_callback_add(ec->frame, "fullscreen", 1104 evas_object_smart_callback_add(ec->frame, "fullscreen",
1083 _e_comp_wl_evas_cb_state_update, ec); 1105 _e_comp_wl_evas_cb_state_update, ec);
1106 evas_object_smart_callback_add(ec->frame, "visibility_force",
1107 _e_comp_wl_evas_mirror_visible, ec);
1108 evas_object_smart_callback_add(ec->frame, "visibility_normal",
1109 _e_comp_wl_evas_mirror_hidden, ec);
1084 } 1110 }
1085 evas_object_event_callback_priority_add(ec->frame, EVAS_CALLBACK_MOVE, 1111 evas_object_event_callback_priority_add(ec->frame, EVAS_CALLBACK_MOVE,
1086 EVAS_CALLBACK_PRIORITY_AFTER, 1112 EVAS_CALLBACK_PRIORITY_AFTER,
diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h
index 11bc1ff88..257c51ec7 100644
--- a/src/bin/e_comp_wl.h
+++ b/src/bin/e_comp_wl.h
@@ -379,6 +379,7 @@ struct _E_Comp_Wl_Client_Data
379 Eina_Bool maximize_anims_disabled E_BITFIELD; 379 Eina_Bool maximize_anims_disabled E_BITFIELD;
380 Eina_Bool ssd_mouse_in E_BITFIELD; 380 Eina_Bool ssd_mouse_in E_BITFIELD;
381 Eina_Bool need_center E_BITFIELD; 381 Eina_Bool need_center E_BITFIELD;
382 Eina_Bool force_visible E_BITFIELD;
382}; 383};
383 384
384struct _E_Comp_Wl_Output 385struct _E_Comp_Wl_Output