Itamar
435c6c6f96
HackStudio: Add basic Git integration
...
This adds a "Git" tab to Hackstudio.
Currently has support for staging and unstaging files.
2020-09-15 21:43:29 +02:00
pkotzbach
82696078b0
LibGUI: Fix to ComboBox fields activation
2020-09-15 20:37:13 +02:00
pkotzbach
8a21c528ad
LibGUI: Minor consistency cleanup in AbstractView::set_cursor() ( #3478 )
2020-09-14 20:55:07 +02:00
Andreas Kling
e78cf6c590
LibGfx+LibGUI: Allow setting tab text alignment with set_property()
2020-09-14 19:55:17 +02:00
Andreas Kling
3355a3e179
LibGUI: Add TabWidget::set_property() and handle some properties
2020-09-14 19:55:17 +02:00
Andreas Kling
22b03dd11b
LibGUI: Add registration for GUI::TabWidget
2020-09-14 16:23:39 +02:00
Andreas Kling
093de0e323
LibGUI: Use Core::Object::set_property() to handle JSON GUI properties
...
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. :^)
2020-09-14 16:16:36 +02:00
Andreas Kling
6fc8dedd28
LibGUI: Allow setting widget visibility from JSON GUI spec
2020-09-14 16:16:36 +02:00
Andreas Kling
6590eb8eb7
LibGUI: Complain about malformed "layout" values in JSON GUI
2020-09-14 16:16:36 +02:00
Andreas Kling
ea17b0cbb6
LibGUI: Start building a way to instantiate GUI from JSON
...
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. :^)
2020-09-14 16:16:36 +02:00
Andreas Kling
3c580233d1
LibGUI: Improve widget registration mechanism a bit
...
Allow registering widgets from namespaces other than GUI. :^)
Also add a few widgets.
2020-09-14 16:16:36 +02:00
Andreas Kling
b78e13cf2e
LibGUI: Make some GUI event getters return const references
...
There's no good reason to return rects/sizes/positions by value.
2020-09-13 21:41:45 +02:00
Ben Wiederhake
e3101c74c6
LibGUI: Use new Bitmap::minimum_pitch method
...
Also, make sure that the painter actually draws on a RGB(A) bitmap.
Closes #3460 .
2020-09-12 11:35:41 +02:00
Ben Wiederhake
9c3a33762b
LibGfx: Saner memory usage of indexed bitmaps
...
Indexed bitmaps used to allocate four times the required amount of memory.
Also, we should acknowledge that the underlying data is not always RGBA32,
and instead cast it only when the true type is known.
2020-09-12 00:13:29 +02:00
Ben Wiederhake
d6673b384e
LibGfx: Remove redundant bits() method
...
In all circumstances, this returned exactly the same thing as scanline_u8(),
so let's just remove the silly detour.
This does not add any new dependency on Bitmap-internals, because that already existed.
2020-09-12 00:13:29 +02:00
Andreas Kling
1a2b626746
LibGUI+LibGfx: Move check box painting to Gfx::StylePainter
...
This will allow us to render check boxes from other places. :^)
2020-09-11 18:42:43 +02:00
Andreas Kling
d76b2d0baa
LibGUI: Use widget override cursors in ColorInput
2020-09-11 14:51:02 +02:00
Andreas Kling
cab422b441
LibGUI: Use widget override cursors in HeaderView
2020-09-11 14:50:30 +02:00
Andreas Kling
69adaf3308
LibGUI: Use widget override cursors in GUI::ResizeCorner
2020-09-11 14:47:38 +02:00
Andreas Kling
7a2faecc15
LibGUI: Use widget override cursors in GUI::TextEditor
2020-09-11 14:26:37 +02:00
Andreas Kling
e2050ea0ce
LibGUI: Use widget override cursors in GUI::Splitter
2020-09-11 14:26:37 +02:00
Andreas Kling
cf429a788c
LibGUI: Add Widget override cursor concept
...
We got ourselves into a mess by making widgets override the window
cursor whenever they wanted a custom cursor. This patch introduces a
better solution to that issue: per-widget override cursors.
Each widget now has an override cursor that overrides the window
cursor when that widget is hovered.
2020-09-11 14:26:37 +02:00
Andreas Kling
b4f307f982
LibGUI+WindowServer: Rename window "override cursor" to just "cursor"
...
Let's just say each window has a cursor, there's not really overriding
going on.
2020-09-11 14:26:37 +02:00
Andreas Kling
0f9be82826
LibGfx: Move StandardCursor enum to LibGfx
...
This enum existed both in LibGUI and WindowServer which was silly and
error-prone.
2020-09-10 19:25:13 +02:00
Andreas Kling
e860a9aa80
LibGUI: Unregister AbstractView from model on destruction
...
It was possible to leave stale view pointers in the model after a view
was destroyed while attached to a model.
2020-09-10 18:45:00 +02:00
Nico Weber
01ff17d374
LibGUI: Do not paint scrollbar button highlight for scrollbars without scrubber
...
If a scrollbar doesn't have a scrubber (because the view it scrolls is
large enough to display all its contents without scrolling), then
it ignores all clicks. We shouldn't draw a hover highlight that suggests
clickability in that case.
2020-09-09 21:04:15 +02:00
asynts
70dd97c46e
AK: Remove FixedArray class.
2020-09-08 14:01:21 +02:00
AnotherTest
02f251bb4a
LibGUI: Fix OOB read in Clipboard::set_data()
2020-09-06 22:22:17 +02:00
Andreas Kling
158f3b9362
LibGUI: Add a Clipboard API for retrieving a copied Gfx::Bitmap
...
The returned bitmap is always going to be a 32-bit RGBA bitmap for now.
In the future we may want to support copy-pasting other formats.
2020-09-05 16:52:35 +02:00
Andreas Kling
2e6d59b7b2
Clipboard: Add a key-value map alongside the clipboard storage
...
A clipping now consists of three things:
- The raw clip data
- A MIME type
- A key-value map (String, String) for anything you like
2020-09-05 16:52:24 +02:00
Andreas Kling
51146e3075
LibGUI: Make the Clipboard API deal in raw byte buffers a bit more
...
To open up for putting not just text/plain content on the clipboard,
let's make the GUI::Clipboard API a bit more raw-data-friendly. :^)
2020-09-05 16:16:01 +02:00
Andreas Kling
27687b1c6e
LibGUI: Handle cursor keydown events in AbstractView
...
Move the basic movement keys (up/down/left/right/home/end/pgup/pgdn)
up to AbstractView::keydown_event() and have it call the virtual
move_cursor() which is then implemented by subclasses.
2020-09-02 21:29:31 +02:00
Andreas Kling
4ba12e9c23
LibGUI: Simplify ListView hover highlighting
...
Instead of tracking the last valid hovered index, just hook the
mousemove event and make the cursor follow the hover when it changes.
2020-09-02 21:29:31 +02:00
Andreas Kling
274a09246b
LibGUI: Move ListView to using AbstractView::move_cursor()
2020-09-02 21:29:31 +02:00
Andreas Kling
dec3998b3c
LibGUI: Disable whitespace visualization in single-line text editors
...
You can enable it manually if you really want it, of course. :^)
2020-09-01 23:57:30 +02:00
Andreas Kling
aa70d8c217
LibGUI: Implement trailing whitespace visualization in TextEditor
...
This patch adds an optional mode where TextEditor highlights trailing
whitespace characters on each line with a nice reddish dither pattern.
We should probably make this themable and I'm sure it could be nicer
somehow, but this is just a first cut and I do kinda like it. :^)
2020-09-01 23:55:35 +02:00
Andreas Kling
a56360f787
LibGUI: Implement the virtual ListView::scroll_into_view()
...
Instead of shadowing the one from AbstractView.
2020-09-01 17:45:28 +02:00
Andreas Kling
04507e288f
LibGUI: Remove ListView::doubleclick_event()
...
We can just let AbstractView take care of this. :^)
2020-09-01 17:45:28 +02:00
Andreas Kling
daeb2bdc60
LibGUI: Don't return early from AbstractView::set_cursor()
...
Calling set_cursor() with the same cursor index is not necessarily
a no-op! For example, we may want to toggle the selection.
2020-09-01 16:33:31 +02:00
Andreas Kling
37df36dbed
LibGUI: Implement move_cursor() in ColumnsView
2020-09-01 16:26:32 +02:00
Andreas Kling
27e86c03da
LibGUI: Implement the virtual IconView::scroll_into_view()
...
This is virtual in AbstractView so let's not shadow it with an IconView
specific variant.
2020-09-01 16:17:17 +02:00
Andreas Kling
72443bd1ab
LibGUI: Teach IconView to use AbstractView::move_cursor()
...
This makes it possible to manipulate the cursor programmatically via
the AbstractView interface.
2020-09-01 16:17:17 +02:00
thankyouverycool
199c1da31c
LibGUI: Hide ResizeCorner in StatusBar when window is maximized
...
Fully expands status bars when maximized and prevents maximized
windows from being erroneously resized.
2020-08-31 09:08:26 +02:00
AnotherTest
e75247a75b
DisplaySettings+LibGUI: Move ItemListModel into LibGUI
...
Without this model, comboboxes are abysmal to work with, so let's not
redefine it every time.
2020-08-29 17:42:03 +02:00
thankyouverycool
2f9a071072
Base+LibGUI: Refresh filetype icons for consistency
...
Improves ini icon depth and adds complementary 16x16/32x32 icons
for music and sound filetypes.
2020-08-29 16:19:02 +02:00
Andreas Kling
b084411258
LibGUI: Make Del/Backspace clear cell w/ "any key pressed" edit trigger
...
This doesn't feel 100% right but it's better than inserting some goofy
whitespace when pressing these keys.
2020-08-29 01:04:22 +02:00
Andreas Kling
c3b3a078f3
LibGUI: Make SortingProxyModel update all view cursors on resort
...
Otherwise they will be stale indexes, which is no good. :^)
2020-08-29 00:18:35 +02:00
Andreas Kling
fed53e19c7
LibGUI: Make AbstractView::set_cursor() scrolling into view optional
...
Sometimes you just want to set the cursor programmatically without
scrolling the view to make the cursor visible.
2020-08-29 00:17:42 +02:00
Andreas Kling
734035857e
LibGUI: Allow AbstractView::set_cursor(ModelIndex(), ...)
...
This should be a valid way to clear the cursor.
2020-08-29 00:16:58 +02:00
Andreas Kling
6316525d50
LibGUI: Add optional "tab key navigation" to AbstractView
...
If enabled, the view cursor will move right/left when pressing
tab/shift+tab.
2020-08-28 21:09:38 +02:00