1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 10:14:57 +00:00
Commit graph

201 commits

Author SHA1 Message Date
Andreas Kling
5670a3e064 GTextEditor: Run clang-format on GTextEditor.cpp 2019-08-21 20:20:07 +02:00
Andreas Kling
d5431a6df8 GTextEditor: Rename is_automatic_indentation_enabled() API
The previous name was is_automatic_indentation() which sounds weird.
2019-08-21 19:33:54 +02:00
Andreas Kling
9e5c5627d5 GTextEditor: Give Line objects a back-reference to the GTextEditor
This will allow us to do more complicated things in Line without having
to pass the editor around all the time.
2019-08-21 19:32:39 +02:00
Andreas Kling
dc3c6be6f2 GScrollBar: Allow scrolling the scrollbar by mouse-wheeling over it 2019-08-20 20:11:20 +02:00
Andreas Kling
076827a05d GModel: Rename on_model_update(GModel&) => on_update()
Just simplifying the API of this hook a little bit.
2019-08-20 19:45:08 +02:00
Andreas Kling
f7dce05c82 LibGUI: Remove confusing GModelNotification concept
This was a bad idea and it didn't stick. Instead we should just use the
simple "on_foo" hook functions like we do for everything else. :^)
2019-08-20 19:44:02 +02:00
Andreas Kling
3792c91059 LibGUI: Implement save_to(JsonObject&) for GWindow and GWidget 2019-08-19 16:34:53 +02:00
Andreas Kling
dc572e31fa LibGUI: Let GWindow::set_main_widget() take ownership of the widget
We were already doing this anyway, with ~GWindow() calling delete on
the main widget.
2019-08-18 12:18:17 +02:00
Andreas Kling
a1a4013b1c LibGUI: Make the timers in GAbstractButton and GScrollBar into children 2019-08-18 12:14:15 +02:00
Andreas Kling
5c7bb09a73 GTreeView: Support multiple root-level items
Previously it was only possible to have a single root-level item in a
GTreeView. This was an oversight and I didn't realize it because this
code was only ever used in the FileManager, which has one root ("/").

Also factored out item toggling into a separate function, and increase
the base indentation level so that root items can be toggled as well.

Finally, let the user toggle the selected item with the spacebar. :^)
2019-08-18 10:17:00 +02:00
Andreas Kling
f6cb2fd2fb GModel: Have create_index() take a const void*
This is just for convenience really. It lets you skip const_casting in
all the code that calls this API, which you would basically always be
doing otherwise.
2019-08-18 10:14:53 +02:00
Andreas Kling
203612439a LibGUI: Add LogStream operator<< for GModelIndex 2019-08-18 10:14:26 +02:00
Andreas Kling
8a91b90258 GTableView: Fix column resize cursor not showing up in scrolled tables
If the table was scrolled somewhat, we'd stop showing the resize cursor
when hovering the mouse cursor between two table column headers.
2019-08-17 15:01:45 +02:00
Andreas Kling
8031960541 GTableView: Fix row selection when clicking between two cells
We should still select the entire row when you click between two cells.
2019-08-17 14:56:53 +02:00
Andreas Kling
9789ee9b58 GTableView: Add a way to customize cell painting per-column
You can now set a GTableCellPaintingDelegate per column in GTableView.
For columns with a painting delegate set, the view will defer to the
delegate for painting each cell in that column.
2019-08-14 20:34:46 +02:00
Andreas Kling
b777f740a4 StylePainter: Move progress bar painting from GProgressBar to here
We need to be able to paint progress bars without having a widget. :^)
2019-08-14 20:31:46 +02:00
Andreas Kling
f9b8a18fae GJsonArrayModel: Add hook for customizing the GModel::Role::Custom data 2019-08-14 20:30:18 +02:00
Andreas Kling
7e93418927 GButton: Allow non-checkable buttons to render as checked
This changes the behavior of the "is_checkable" flag on GAbstractButton
to only be about user interaction checkability. In other words, it now
only prevents the user from checking/unchecking the button, the code.
2019-08-12 18:50:19 +02:00
Andreas Kling
69ec08774b GJsonArrayModel: Add hook to customize what comes out of GModel::Sort
Now you can provide a massage_for_sort hook in your FieldSpec.
This allows you to implement arbitrary sorting rules for the data.
2019-08-12 11:54:18 +02:00
Ignas S
6228e18a09 GTableView and friends: API improvements for 'Sortable' flag. 2019-08-12 11:01:47 +02:00
Ignas S
405d7ddec8 GDirectoryModel: prevent sorting by icons. 2019-08-12 11:01:47 +02:00
Ignas S
823d5d097b GTableView: add 'sortable' column header flag.
This prevents sorting unsortable by unsortable things, like icons.
2019-08-12 11:01:47 +02:00
ignas-sa
0faaa1e53a GSortingProxyModel: Sort case insensitively by default (#441) 2019-08-11 18:11:25 +02:00
Ignas S
feabe6ed31 GScrollBar: highlight the scrubber while it's in use.
Originally, it would stop being highlighted if the mouse was moved away from
it, even while in use. Now it will stay highlighted for the duration of
usage.
2019-08-11 12:00:10 +02:00
Andreas Kling
afd25679bc GJsonArrayModel: Support fields that aren't tied to a single JSON value
Change the custom data massaging callback to take a const JsonObject&.
This will allow binding together data from multiple fields into one
output in the model. :^)
2019-08-10 15:06:29 +02:00
Andreas Kling
078ce97c41 GJsonArrayModel: Add an optional "massage_for_display" fieldspec hook
This allows to you install a custom callback that can do anything with
Role::Display data before it's returned by GJsonArrayModel::data().
2019-08-10 11:06:29 +02:00
Andreas Kling
6e50631e35 LibGUI: Add GJsonArrayModel, a simple JSON-data-file-as-GModel helper
This makes it very easy to expose JSON files as GModels. :^)
2019-08-10 10:29:46 +02:00
Andreas Kling
0a061d4314 GLabel: Repaint immediately on icon change 2019-08-09 23:48:44 +02:00
Andreas Kling
db6ed8eebd GFilePicker: Make double-clicking actually choose/pick the file
..unless it's a directory, in which case we navigate into the directory
instead, as you would expect.
2019-08-09 23:45:04 +02:00
Andreas Kling
b5525d4ec3 GTableView: Add a mode for automatically sizing column to fit content
You can now call GTableView::set_size_columns_to_fit_content(true) and
the table columns will grow to fit the content. They will never shrink,
only grow.

This means I can spend a lot less time fidgeting with column widths :^)
2019-08-09 19:30:24 +02:00
Andreas Kling
899366da9d GTableView: Debug-log the current column width while resizing
This makes it easier to decide on a good initial width for a column.
2019-08-08 20:41:24 +02:00
Andreas Kling
fdcaf2d2b5 GComboBox: Make set_only_allow_values_from_model() actually take effect 2019-08-05 18:52:29 +02:00
Andreas Kling
6311a617be GComboBox: Include the selected index with the on_change notification
This will be useful for clients that need to fetch additional data from
the model on selection change.
2019-08-05 18:42:51 +02:00
Andreas Kling
ffff150435 LibGUI: Allow specifying the model column for GListView and GComboBox
These widgets can only display a single column from the underlying data
model, and it was previously hard-coded to use column 0. Now you can
use any column you like.
2019-08-05 18:32:04 +02:00
Andreas Kling
7c0f9ea2b9 GComboBox: Constrain the list popup window height to the desktop rect
This looks much better than allowing it to extend past the bottom of
the screen. :^)
2019-08-05 18:31:13 +02:00
Andreas Kling
47511b5930 GWidget: Implement set_backcolor() and set_forecolor()
These are set-color-from-string variants used by the VisualBuilder's
code generator.
2019-08-03 11:35:10 +02:00
Andreas Kling
54c77cb714 GVariant: Try to do color string parsing in GVariant::to_color()
If the underlying variant type is a String, try to parse out a color
when to_color() is called.

This makes VisualBuilder apply the saved colors when loading forms.
2019-08-03 11:34:02 +02:00
rhin123
c02868f000 LibGUI: Allow setting window icon before show(). 2019-08-02 21:18:21 +02:00
Andreas Kling
673a98258b GDirectoryModel: Fix redundant identical comparison.
Found by PVS-Studio.
2019-08-01 14:01:37 +02:00
Andreas Kling
db5a4c3409 GDirectoryModel: Tweak default width of permission bits column
Now that GTableView elides text content by default, this column was a
little too wide and ended up getting elided sometimes.
2019-07-31 21:21:20 +02:00
Andreas Kling
df51014834 GTableView: Elide cell content so it doesn't overflow the cell rect
I originally thought I'd have to implement text clipping in Painter for
this, but it seems like I can get away without doing that today. :^)

Fixes #390.
2019-07-31 21:18:01 +02:00
Conrad Pankoff
6b5fbad250 LibGUI: Simplify GTreeView ancestor traversal 2019-07-31 16:38:10 +02:00
Conrad Pankoff
9b6e99f17e LibGUI: Reify intermediate nodes during index traversal
In the event where you want to find the index of a deeply-nested path
with a GFileSystemModel that hasn't yet traversed most of that path, it
is possible for a false negative failure to occur. This failure is
caused by the GFileSystemModel incorrectly bailing out of the search
when it hits the first unseen path segment that is not at the very end
of the path.

This patch fixes this problem by reifying the intermediate nodes during
that search and traversal process.
2019-07-31 16:33:21 +02:00
Andreas Kling
993ab84a0d GDirectoryModel: Add "modification time" column.
Fixes #373.
2019-07-31 07:09:35 +02:00
Andreas Kling
10b4c92e21 GVariant: Add Type::UnsignedInt. 2019-07-31 07:07:59 +02:00
Andreas Kling
34db7067fa GDirectoryModel: Shrink the Permissions and Inode columns a little bit. 2019-07-31 06:50:01 +02:00
rhin123
c869d62e16 GFilePicker: Edit file name on opening window
Overlooked that you can't have two GWidgets
selected at the same time, whoops!
2019-07-30 09:19:14 +02:00
rhin123
a175e76948 TextEditor: Include extension during SaveAs
When we save-as in the text editor we now auto-populate GFilePicker /w
the current name & extension.
2019-07-29 20:46:31 +02:00
Andreas Kling
5ded77df39 Kernel+ProcessManager: Let processes have an icon and show it in the table.
Processes can now have an icon assigned, which is essentially a 16x16 RGBA32
bitmap exposed as a shared buffer ID.

You set the icon ID by calling set_process_icon(int) and the icon ID will be
exposed through /proc/all.

To make this work, I added a mechanism for making shared buffers globally
accessible. For safety reasons, each app seals the icon buffer before making
it global.

Right now the first call to GWindow::set_icon() is what determines the
process icon. We'll probably change this in the future. :^)
2019-07-29 07:26:01 +02:00
Rhin
731f91f1ab GFilePicker: Quality of life improvements (#370)
Added:
- Default to home directory on open.
- Save button focus.
- Correct title for the mode were in.
- Home directory shortcut.
2019-07-28 20:04:57 +02:00