summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2018-01-17 17:33:57 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2018-01-17 16:52:34 -0500
commit02af7e8210bf8d939e2a48c577049cb9125e27d4 (patch)
tree6ed9f586ed5923cb7257a90f1d348a8143f4f563
parentf6d045ea8db84e33e614eb159bde70d09f45b684 (diff)
efl-wl: only send keyboard enter and activation for mapped surfaces
setting active for unmapped surfaces bypasses the expected path for unsetting activate during surface unmap if the surface is destroyed while active and unmapped @fix
-rw-r--r--src/lib/efl_wl/efl_wl.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/lib/efl_wl/efl_wl.c b/src/lib/efl_wl/efl_wl.c
index 736203938f..da935c3512 100644
--- a/src/lib/efl_wl/efl_wl.c
+++ b/src/lib/efl_wl/efl_wl.c
@@ -1249,12 +1249,16 @@ shell_surface_send_configure(Comp_Surface *cs)
1249 { 1249 {
1250 Comp_Surface *ccs; 1250 Comp_Surface *ccs;
1251 1251
1252 comp_seats_redo_enter(cs->c, cs); 1252 /* apply activation to already-mapped surface */
1253 if (cs->mapped)
1254 {
1255 comp_seats_redo_enter(cs->c, cs);
1256 shell_surface_aspect_update(cs);
1257 shell_surface_minmax_update(cs);
1258 }
1253 EINA_INLIST_FOREACH(cs->children, ccs) 1259 EINA_INLIST_FOREACH(cs->children, ccs)
1254 if (ccs->shell.surface && ccs->role && ccs->shell.popup) 1260 if (ccs->shell.surface && ccs->role && ccs->shell.popup)
1255 ccs->shell.activated = cs->shell.activated; 1261 ccs->shell.activated = cs->shell.activated;
1256 shell_surface_aspect_update(cs);
1257 shell_surface_minmax_update(cs);
1258 } 1262 }
1259 else 1263 else
1260 shell_surface_deactivate_recurse(cs); 1264 shell_surface_deactivate_recurse(cs);
@@ -1422,6 +1426,13 @@ comp_surface_commit_state(Comp_Surface *cs, Comp_Buffer_State *state)
1422 { 1426 {
1423 if (cs->role && (!cs->extracted)) 1427 if (cs->role && (!cs->extracted))
1424 evas_object_show(cs->obj); 1428 evas_object_show(cs->obj);
1429 /* apply activation to activated surface on map */
1430 if (cs->role && cs->shell.surface && cs->shell.activated && (!cs->shell.popup))
1431 {
1432 comp_seats_redo_enter(cs->c, cs);
1433 shell_surface_aspect_update(cs);
1434 shell_surface_minmax_update(cs);
1435 }
1425 } 1436 }
1426 1437
1427 if (state->attach && state->buffer) 1438 if (state->attach && state->buffer)