Page MenuHomePhabricator

focus: do not allow focus to exit a popup
Needs ReviewPublic

Authored by segfaultxavi on Oct 17 2018, 7:28 AM.

Details

Summary

Popup windows dim the background and do not allow the user
to click outside the popup. However, pressing TAB can take
you to widgets on the background. This didn't happen in
legacy.

Fixes T7432

Test Plan

Instructions in T7432

Diff Detail

Repository
rEFL core/efl
Branch
devs/xartigas/fix-focus-in-popups
Lint
No Linters Available
Unit
No Unit Test Coverage
Build Status
Buildable 7830
Build 7334: arc lint + arc unit
segfaultxavi created this revision.Oct 17 2018, 7:28 AM
segfaultxavi requested review of this revision.Oct 17 2018, 7:28 AM

From the focus POV - this looks completly right :)

@Jaehyun_Cho Is it okay from the widget POV ? :)

@bu5hm4n @segfaultxavi

From widget's behavior POV, it is fine. But I think we need to resolve multiple class inheritance issue in C# beforehand.

mixin Efl.Ui.Focus.Layer inherits from Efl.Ui.Widget so it requires multiple class inheritance in C#.
Therefore, I think this multiple class inheritance issue should be resolved before applying this patch.

Please refer the following comment on T7366.

@lauromoura @felipealmeida @bu5hm4n

In the latest devs/lauromoura/csharp-new-classes branch, all the duplicated re-implemented methods are removed. (parent's methods are used instead)
e.g. Efl.Ui.Widget.FocusStateApply() is not re-implemented in Efl.Ui.Layout.Object because efl_ui_layout_object.eo does not implement focus_state_apply.

However, it reveals mixin's hierarchy problem because eo mixin is converted to EFL# interface so eo mixin's abstract class parent is removed in EFL# interface's parent list.
e.g. mixin Efl.Ui.Focus.Layer does not inherit from Efl.Ui.Widget in EFL#. So Efl.Ui.Focus.Layer's re-implemented FocusStateApply() cannot be called although efl_ui_focus_layer.eo implements focus_state_apply.

I think we need to think how to resolve this mixin case here again for language bindings.