Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable widgets #1620

Closed
wants to merge 18 commits into from
Closed

Disable widgets #1620

wants to merge 18 commits into from

Conversation

xarvic
Copy link
Collaborator

@xarvic xarvic commented Feb 23, 2021

An implementation of a disabled state for widgets (issue: #746 ).
It adds the following:

  • set_enabled(bool) for EventCtx and UpdateCtx which changes if the state of the current widget is "manually disabled".
  • is_enabled() -> bool for all Context which returns false if this widget or any of its ancestors is manually disabled".
  • LifeCycle::EnabledChanged(bool) which is called every time when is_enabled() would return a different value than before.

The behaviour of focusing widgets was changed. The WidgetPod now has field can_auto_focus that is used to determine if this widget should get focused as a result to focus_pref or focus_next. If the widget is focused when it gets disabled, it resigns the focus and is`nt able to request the focus until it is enabled again.

While disabled, a widget recieves only some of the event. MouseMove, MouseDown, MouseUp, Zoom and MouseWheel are blocked. But i`m not sure if this is desirable, maybe a scroll widget should still be able to scroll its content.

Problems:

  • widgets are always enabled until the first call to update or event, therefore for the moment using EnabledIf is not a reliable safety mechanism to prevent the user from doing illegal operations.

Todo:

  • make widget inactive when disabled

@xarvic
Copy link
Collaborator Author

xarvic commented Feb 24, 2021

This was way to complicated and didn't work as well as expected. I'm closing this Issue for now.

@xarvic xarvic closed this Feb 24, 2021
@cmyr
Copy link
Member

cmyr commented Feb 26, 2021

@xarvic this is a definitely a harder problem than it might seem like at first, happy to talk about it sometime if you'd like.

This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants