diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2018-01-17 17:33:57 -0500 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2018-01-17 16:52:34 -0500 |
commit | 02af7e8210bf8d939e2a48c577049cb9125e27d4 (patch) | |
tree | 6ed9f586ed5923cb7257a90f1d348a8143f4f563 /src/lib/efl_wl/efl_wl.c | |
parent | f6d045ea8db84e33e614eb159bde70d09f45b684 (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
Diffstat (limited to '')
-rw-r--r-- | src/lib/efl_wl/efl_wl.c | 17 |
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) |