Age | Commit message (Collapse) | Author |
|
|
|
When calling set_checked(true) on an exclusive button, we will now
transfer focus to the newly checked button if one of its now-unchecked
siblings had focus before.
This makes windows that place initial focus somewhere in a group of
radio buttons look nicer when they show up, since focus will be on
whichever radio button was pre-checked, which may not be the first one
in the group.
|
|
Making an AbstractButton exclusive means that we enforce that only one
of the exclusive buttons within the same parent widget can be checked
at a time.
RadioButton was doing exactly the same thing, except in a custom way.
So just remove the custom code and make it exclusive. :^)
|
|
Taking a "const StringView&" for the initial text does not achieve
anything useful. Just take a "String" and move it into storage.
|
|
If a button is orphaned, there are no siblings anyway, so there's no
need to try to update them.
|
|
Every widget now has a GUI::FocusPolicy that determines how it can
receive focus:
- NoFocus: The widget is not focusable (default)
- TabFocus: The widget can be focused using the tab key.
- ClickFocus: The widget can be focused by clicking on it.
- StrongFocus: Both of the above.
For widgets that have a focus proxy, getting/setting the focus policy
will affect the proxy instead.
|
|
This applies to normal push buttons, checkboxes, and radio buttons.
It feels very natural. Even moreso than activating with return..
|
|
Draw a dotted focus rect to make it stand out more. Also make it much
larger on regular text-only GUI::Buttons.
|
|
Widgets should respect the background/foreground roles in a way that
makes sense for the widget.
|
|
Instead of everyone overriding save_to() and set_property() and doing
a pretty asymmetric job of implementing the various properties, let's
add a bit of structure here.
Object properties are now represented by a Core::Property. Properties
are registered with a getter and setter (optional) in constructors.
I've added some convenience macros for creating and registering
properties, but this does still feel a bit bulky. We'll have to
iterate on this and see where it goes.
|
|
This fits nicer with FloatRect,FloatPoint,FloatSize and gives a much
better visual clue about what type of metric is being used.
|
|
|
|
This will allow you us to implement special behavior when Ctrl+clicking
a button.
|
|
We never deliver mouse events to disabled widgets, so there's no need
to check is_enabled() in these event handlers.
|
|
This makes it possible for an RPC client to modify some interesting
widget properties.
|
|
The more stuff we save in save_to() overrides, the more interesting it
becomes inspecting GUI programs. :^)
|
|
|
|
|
|
|
|
This patch adds <LibGUI/Forward.h> and uses it a bunch.
It also dragged various header dependency reduction changes into it.
|
|
|