summaryrefslogtreecommitdiff
path: root/src/lib/efl_wl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/efl_wl/efl_wl.c35
1 files changed, 15 insertions, 20 deletions
diff --git a/src/lib/efl_wl/efl_wl.c b/src/lib/efl_wl/efl_wl.c
index c3a37e821d..a18039ff21 100644
--- a/src/lib/efl_wl/efl_wl.c
+++ b/src/lib/efl_wl/efl_wl.c
@@ -2277,36 +2277,31 @@ comp_surface_smart_show(Evas_Object *obj)
2277static void 2277static void
2278comp_surface_smart_hide(Evas_Object *obj) 2278comp_surface_smart_hide(Evas_Object *obj)
2279{ 2279{
2280 Comp_Surface *cs = evas_object_smart_data_get(obj); 2280 Comp_Surface *lcs, *cs = evas_object_smart_data_get(obj);
2281 Eina_List *l;
2282 Evas_Object *o;
2283 2281
2284 evas_object_hide(cs->clip); 2282 evas_object_hide(cs->clip);
2285 cs->mapped = 0; 2283 cs->mapped = 0;
2286 2284
2287 if (!cs->shell.activated) return; 2285 if (!cs->shell.activated) return;
2288 cs->shell.activated = 0; 2286 cs->shell.activated = 0;
2289 if (cs->shell.grabs) 2287 if (cs->shell.grabs && cs->role)
2290 zxdg_popup_v6_send_popup_done(cs->role); 2288 zxdg_popup_v6_send_popup_done(cs->role);
2291 if (cs->parent && cs->shell.popup) return; 2289 if (cs->parent && cs->shell.popup) return;
2292 /* attempt to revert focus based on stacking order */ 2290 /* attempt to revert focus based on stacking order */
2293 l = evas_object_smart_members_get(evas_object_smart_parent_get(obj)); 2291 if (cs->parent)
2294 EINA_LIST_FREE(l, o)
2295 { 2292 {
2296 Comp_Surface *lcs; 2293 EINA_INLIST_REVERSE_FOREACH(cs->parent->children, lcs)
2297 if (o == obj) continue; 2294 {
2298 if (!evas_object_visible_get(o)) continue; 2295 if (lcs == cs) continue;
2299 if (o == cs->c->clip) continue; 2296 if (!evas_object_visible_get(lcs->obj)) continue;
2300 if (o == cs->c->events) continue; 2297 if ((!lcs->shell.surface) || (!lcs->role)) continue;
2301 if (!eina_streq(evas_object_type_get(o), "comp_surface")) continue; 2298 lcs->shell.activated = 1;
2302 lcs = evas_object_smart_data_get(o); 2299 if (lcs->shell.popup)
2303 if ((!lcs->shell.surface) || (!lcs->role)) continue; 2300 evas_object_raise(lcs->obj);
2304 lcs->shell.activated = 1; 2301 else
2305 if (lcs->shell.popup) 2302 shell_surface_send_configure(lcs);
2306 evas_object_raise(lcs->obj); 2303 return;
2307 else 2304 }
2308 shell_surface_send_configure(lcs);
2309 return;
2310 } 2305 }
2311 if (cs->c->seats) 2306 if (cs->c->seats)
2312 comp_seats_redo_enter(cs->c, NULL); 2307 comp_seats_redo_enter(cs->c, NULL);