Andreas Kling
63cdc3d2d5
LibGUI: Support GTableView navigation with Page Up and Page Down.
...
Also base the vertical scrollbar's gutter range on the visible content rect,
making it very similar to a Page Up/Down. Maybe they should be exactly the
same, I don't know.
2019-03-02 23:58:45 +01:00
Andreas Kling
596a5ce5a4
LibGUI+WindowServer: Add app-global keyboard shortcuts.
...
This patch adds a GShortcut class. Each GAction can have a GShortcut which
will cause the event loop to listen for that key combination app-globally
and activate the event in case it's pressed.
The shortcut will also be displayed when the action is added to a menu.
Use this to hook up Alt+Up with the "open parent directory" action in the
FileManager app. :^)
2019-03-02 10:10:06 +01:00
Andreas Kling
574a399347
LibGUI: GTableView should scroll items into view when keyboard navigating.
2019-03-01 14:29:34 +01:00
Andreas Kling
b5dcad932e
LibGUI: Allow basic keyboard navigation in GTableView.
...
Pressing Enter will now "activate" the selected index, meaning that
the model gets a call to activate(GModelIndex).
2019-03-01 13:48:08 +01:00
Andreas Kling
e1d0a3f226
LibGUI: Let GTableModel handle the selection instead of doing it virtually.
...
It's silly to force every subclass models to deal with selection.
2019-03-01 13:03:13 +01:00
Andreas Kling
9c21874d33
LibGUI: GTableView scrolling ranges should be based on the available area.
...
We have to subtract the headers and scrollbars to get the correct behavior.
2019-03-01 11:04:55 +01:00
Andreas Kling
6c2089c59d
Put miscellaneous debug spam behind #ifdefs.
2019-03-01 10:51:58 +01:00
Andreas Kling
b5e5f26a82
Base: Add Csilla Bold 7x10 variant.
...
It's nice to have a thin and a bold variant to complement each other.
2019-03-01 02:50:50 +01:00
Andreas Kling
567a403683
LibGUI: Tweak GStatusBar margins.
2019-02-28 22:33:39 +01:00
Andreas Kling
bff5b71467
LibGUI: Add a GModelNotification class that views will receive.
...
I don't want to use GEvent here since these need to be synchronous
and mixing sync and async GEvents would be stupid.
2019-02-28 21:30:17 +01:00
Andreas Kling
b132150799
LibGUI: Support bitmaps in GTableView cells.
...
Use this to add an icon for each process in the ProcessManager.
Right now they all use a generic gear icon, but I'd like to have
per-process icons, obviously. :^)
2019-02-28 20:16:10 +01:00
Andreas Kling
3fe7ddadaf
LibGUI: Clip to paint event rect in most widgets.
2019-02-28 19:34:55 +01:00
Andreas Kling
737a4d2377
LibGUI: Both GToolBar and GStatusBar should have highlight/shadow.
2019-02-28 19:31:37 +01:00
Andreas Kling
c5d88ff0d8
LibGUI: Top line on GStatusBar should be a highlight, not a shadow.
2019-02-28 19:17:08 +01:00
Andreas Kling
fd428d6ed3
SharedGraphics: Make Painter clipping work with translated clip origin.
2019-02-28 18:57:36 +01:00
Andreas Kling
8eefdbdce8
LibGUI: Add horizontal scrollbar to GTableView.
...
Now we can scroll content in both directions if it won't fit in the view.
2019-02-28 17:58:53 +01:00
Andreas Kling
28652a0bf7
LibGUI: GTableView was accidentally obscuring the last row.
2019-02-28 16:42:18 +01:00
Andreas Kling
75fabef57b
LibGUI: Add GVariant class and use it for table model data.
2019-02-28 16:20:29 +01:00
Andreas Kling
62b4f39cd4
LibGUI: GTableView should clear the selection if clicking outside items.
2019-02-28 14:05:02 +01:00
Andreas Kling
6af2ce0f7e
LibGUI: Re-enable the update rect coalescing.
2019-02-28 13:58:04 +01:00
Andreas Kling
7eb42b5ffb
LibGUI: GTableView paints itself completely, no need for auto filling.
2019-02-28 13:57:41 +01:00
Andreas Kling
827ec99a8f
LibGUI: Update GTableView's scrollbar range in response to resize.
2019-02-28 13:25:52 +01:00
Andreas Kling
fd280a6a03
LibGUI: Pad GTableView cells on the right side as well.
2019-02-28 11:31:07 +01:00
Andreas Kling
b4c20789fb
LibGUI: Allow specifying per-column text alignment.
2019-02-28 11:27:04 +01:00
Andreas Kling
40c8dd80d1
LibGUI: Draw separators between GTableView column headers.
2019-02-28 11:04:03 +01:00
Andreas Kling
dc9f8a9361
LibGUI: Take ProcessManager's process view and turn it into GTableView.
...
Make it sufficiently generic that it can be reused for any table data. :^)
2019-02-28 10:57:09 +01:00
Andreas Kling
6e571b66f1
ProcessManager: Move ProcessTableModel class to its own files.
2019-02-28 10:20:04 +01:00
Andreas Kling
166aadc4e1
ProcessManager: Start working on a graphical process manager.
...
I need a table view widget for this thing, so I'm also using this to
prototype a model/view thingy.
2019-02-28 01:43:50 +01:00
Andreas Kling
6e70ba7d1d
LibGUI: GWindow should only discard the backing store on actual resize.
2019-02-27 18:52:12 +01:00
Andreas Kling
3f29a12d90
More compat work. Rename libraries from LibFoo.a => libfoo.a
...
This makes it more straightforward to build a cross-compiler toolchain.
Also move math stuff from LibC to LibM.
2019-02-26 13:30:57 +01:00
Andreas Kling
c90962b842
LibGUI: Make toolbars a bit bigger by default.
2019-02-26 11:14:35 +01:00
Andreas Kling
9444ed0117
LibGUI: Remove gradient from the default button style.
...
Buttons actually look nicer without the gradient. :^)
2019-02-26 11:14:07 +01:00
Andreas Kling
ae90043424
WindowServer+LibGUI: Send the window size along with Paint server messages.
...
This way GWindow doesn't need to do synchronous IPC to fetch the appropriate
size for the window's backing store. This is mostly only relevant during
live resize.
2019-02-26 10:53:21 +01:00
Andreas Kling
1effe70543
WindowServer+LibGUI: Fix global mouse tracking with recursive widget trees.
...
Also avoid sending multiple copies of mouse events to global trackers.
2019-02-26 10:34:05 +01:00
Andreas Kling
95cfa49f1b
LibGUI: Make event receivers be weak pointers.
2019-02-26 00:51:49 +01:00
Andreas Kling
9624b54703
More moving towards using signed types.
...
I'm still feeling this out, but I am starting to like the general idea.
2019-02-25 22:06:55 +01:00
Andreas Kling
901b7d5d91
Fix a bunch of compiler warnings. Not all, but a lot.
2019-02-25 19:05:51 +01:00
Andreas Kling
15fb917f28
Convert more RetainPtr use to Retained.
2019-02-25 16:04:08 +01:00
Andreas Kling
2cfcbdc735
AK: Add Retained<T>, like RetainPtr, but never null.
...
Also use some Clang attribute wizardry to get a warning for use-after-move.
2019-02-25 12:43:52 +01:00
Andreas Kling
d7753c7c8d
Move over to building all of userspace with i686-pc-serenity-g++.
2019-02-22 14:45:14 +01:00
Andreas Kling
75b100673f
Switch over to building everything with i686-elf-g++.
2019-02-22 10:45:32 +01:00
Andreas Kling
f5f136931a
Kernel: Start adding various file system permission checks.
...
Fail with EACCES in various situations. Fix userland bugs that were exposed.
2019-02-21 15:45:31 +01:00
Andreas Kling
6084cd0c56
Add concept of size increments to windowing system.
...
Use this to implement incremental resizing for Terminal so that we only
ever resize to fit a perfect number of rows and columns.
This is very nice. :^)
2019-02-21 00:21:23 +01:00
Andreas Kling
fa02d2a39b
Rework the rendering model so that clients instantiate backing stores.
...
This makes interactive resizing work a lot better, althought it's still not
perfect. There are still glitches and unpleasant flashes of zeroed memory.
2019-02-20 22:08:14 +01:00
Andreas Kling
59b8183c4b
WindowServer: Support resizing windows.
...
This is pretty limited and not entirely stable, but it does work! :^)
2019-02-20 15:34:55 +01:00
Andreas Kling
9763eb44f9
LibGUI: Pack toolbar buttons closer together.
2019-02-20 11:56:28 +01:00
Andreas Kling
bf30502560
LibGUI: Implement enter/leave events (with WindowServer support.)
...
Windows now learn when the mouse cursor leaves or enters them.
Use this to implement GWidget::{enter,leave}_event() and use that
to implement the CoolBar button effect. :^)
2019-02-20 10:12:19 +01:00
Andreas Kling
d353c7c3d6
LibGUI: Support different button styles.
...
I want to try an MS Office 97 "CoolBar" inspired look for my toolbars.
This is only the painting support, we still need hover events to implement
the actual effect.
2019-02-20 09:22:38 +01:00
Andreas Kling
dc753b58a5
LibGUI: Improve GBoxLayout so it can better support GToolBar.
...
Added spacing and margin concepts to GLayout. Support layout a sequence
of nothing but fixed-size objects in the desired orientation. :^)
2019-02-20 09:04:28 +01:00
Andreas Kling
b704d3d295
LibGUI: Add a GToolBar class that can be populated with GActions.
...
The same action can be added to both a menu and a toolbar.
Use this to put a toolbar into FileManager. This is pretty neat. :^)
2019-02-20 02:39:46 +01:00