Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
Why break at LibHTTP? Because "Meta+Libraries" would be insanely large,
and breaking between LibHTTP and LibJS makes the commits roughly evenly large.
|
|
|
|
|
|
All views want the same behavior, so move this to the base class. :^)
|
|
This fixes an issue in FileManager where an editor opened in the table
view mode would remain open after switching to the icon mode.
|
|
All it took was overriding content_rect() :^)
|
|
We want all views to respond to the editing key as long as the relevant
edit trigger is activated.
|
|
IconView now responds to the editing key (F2) if the view is editable.
It does feel a little bit weird to have content_rect() return the text
rect for an item, and not the whole item rect. This internal API could
probably be better.
|
|
|
|
This will allow us to edit models through a SortingProxyModel. :^)
|
|
With this commit, <AK/Format.h> has a more supportive role and isn't
used directly.
Essentially, there now is a public 'vformat' function ('v' for vector)
which takes already type erased parameters. The name is choosen to
indicate that this function behaves similar to C-style functions taking
a va_list equivalent.
The interface for frontend users are now 'String::formatted' and
'StringBuilder::appendff'.
|
|
Fixes keyboard increment/decrement of SpinBox values.
After PR #2412 the TextBox class started not propagating arrow key
events to the parent widgets because it handles them itself now.
It also added two new events for these arrow keys, so use them instead
in SpinBox.
|
|
|
|
|
|
This lets you show some disabled text when no text is entered, and the
editor is not focused.
|
|
Since TCP sequence numbers are randomly choosen 32-bit numbers, it often
happend that the most significant bit was set. The cast to a 32-bit
signed integer then made the number negative.
Thus TCP sequence were shown negative in the SystemMonitor every so
often.
|
|
|
|
Previously, it didn't take into account the visibility of
column headers.
|
|
When holding Ctrl and scrolling on a slider widget, the scrolling
acceleration gets increased.
This can make it faster to get to the knob location you want to
get to. :^)
|
|
This does exactly what it sounds like. :^)
|
|
Now that the "/" directory can have a (virtual) parent index, we need
to account for that when converting a full path to a model index.
|
|
|
|
This will allow FileIconProvider to check additional things about
the specified path. (We previously only had access to the basename.)
|
|
Only focus the new active child if the old one had focus previously.
|
|
Need to set the sort order after model was set to sort the table.
|
|
Instead of forcefully setting the sort order to Ascending upon column
sort, setting it to the previously selected sort order
|
|
Basically, setting the hue is numerically sensitive when the value or
saturation are low.
|
|
When 4 character colors were allowed, backspace misbehaved and you
couldn't backspace the whole color.
|
|
|
|
|
|
You can now construct a FileSystemModel with a null String() as the
root path. This will root it one level above "/" which makes the
root directory itself selectable as a child.
This will be useful in some places, e.g the FileManager application.
|
|
Don't just set the selection, set the cursor.
|
|
This code was confusing two different versions of scroll_into_view that
were getting mixed up due to member function shadowing.
Adding an "override" to the subclass declaration exposed the problem.
With this fixed, we no longer lose our scroll position wildly when
using the mouse to select TreeView items.
|
|
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 adds a "Git" tab to Hackstudio.
Currently has support for staging and unstaging files.
|
|
|
|
|
|
|
|
|
|
|
|
Piggyback on the existing mechanism to set individual properties.
This doesn't cover layouts or child widgets, but the per-widget own
properties can be set this way.
Any property can now be set in JSON GUI, all you need to do is handle
it in the relevant Core::Object::set_property() override. :^)
|
|
|
|
|
|
My original idea for GUI building tools was to have the "VisualBuilder"
app generate C++ code which in turn programmatically instantiated UI.
That never really materialized in any useful way beyond static UIs.
This is a fresh, new approach: using JSON to declare the UI and parsing
and constructing this UI at runtime. This will allow for way more
dynamic and flexible approaches to GUI development (I think.)
The basic idea is that you pass a JSON string to Widget::load_from_json
and it takes care of the rest.
This first version supports basic box layouts and instantiation of
arbitrary widgets, as long as those widgets have been registered.
This code has some pretty rough edges right now as it's evolving and
we need to figure out a lot of things about how it should work.
Nevertheless, it feels pretty cool. :^)
|
|
Allow registering widgets from namespaces other than GUI. :^)
Also add a few widgets.
|