Commit graph

2133 commits

Author SHA1 Message Date
Andreas Kling
986f5806d7 VisualBuilder: Emit on_widget_selected() when appropriate.
This allows the properties window to stay in sync with what's happening.
For multi-widget selections, we don't show any properties.
2019-04-19 23:09:38 +02:00
Andreas Kling
b64408a564 VisualBuilder: Make widget deletion work properly. 2019-04-19 22:52:13 +02:00
Andreas Kling
440700b4cb VisualBuilder: Multiple-widget selection support.
This is pretty damn nice, now I can move and resize entire groups of widgets
together. Diagonal group resizing feels a bit strange but I wasn't expecting
it not to. :^)
2019-04-19 22:46:16 +02:00
Andreas Kling
e001954193 AK: And one more RetainPtr::operator==() G++ complains about in LibGUI. 2019-04-19 21:36:11 +02:00
Andreas Kling
b985d0ec6e AK: Add RetainPtr::operator==() overload G++ is whining about. 2019-04-19 21:34:47 +02:00
Andreas Kling
77418c1942 LibGUI: Remove GListBox since it was not kept up-to-date.
I'll come back and add a GListView eventually, but this is not good enough.
2019-04-19 21:13:40 +02:00
Andreas Kling
b3f657a1c6 VisualBuilder: Expose GGroupBox name property. 2019-04-19 01:40:25 +02:00
Andreas Kling
62d347d12a VisualBuilder: Remove the separate property editor box in favor of inline.
Also make the property names show up in bold text. :^)
2019-04-19 01:16:57 +02:00
Andreas Kling
3a33b8ea08 VisualBuilder: Hook up everything needed for widget property editing.
It's now possible to edit widget properties inline in the properties window.
We're currently relying on the basic GVariant conversion functions to do
all the "parsing" but that's not gonna be good enough.
2019-04-19 01:05:59 +02:00
Andreas Kling
18785ba5c3 LibGUI: Move editing logic from GTableView up to GAbstractView.
GAbstractView should be able to manage the high-level editing logic, as long
as subclasses implement content_rect(GModelIndex) so we know where to put
the editing widgets. :^)
2019-04-19 00:07:33 +02:00
Andreas Kling
9cab7a0707 LibGUI: Move the editing widget along with the content when scrolling. 2019-04-18 23:57:07 +02:00
Andreas Kling
568f3125f3 GWidget: Always update self after a child is removed.
We could probably tighten the amount of invalidation we do here, but this is
definitely more correct than not invalidating at all.
2019-04-18 23:25:30 +02:00
Andreas Kling
cc9cefbd5f LibGUI: GWindow's focused widget should be a WeakPtr.
This fixes some very obvious use-after-free accesses.
2019-04-18 23:16:57 +02:00
Andreas Kling
9e6b0ccc0e LibCore+LibGUI: Make CObject child events synchronous.
...and then make GWidget layout invalidation lazy. This way we coalesce
multiple invalidations into a single relayout and we don't have to worry
about child widgets not being fully constructed.
2019-04-18 22:57:24 +02:00
Andreas Kling
0e6b273620 LibGUI: Start working on GTableView inline editing.
This is pretty shaky still, but the basic idea is that you subclass GModel
and return true for editable indices. The table view also needs to have its
editable flag set.
2019-04-18 22:27:14 +02:00
Andreas Kling
9ef06e2117 LibC: stddbg should be opened with O_CLOEXEC. 2019-04-18 22:20:01 +02:00
Andreas Kling
6f9df89c92 AK: MappedFile should open with O_CLOEXEC. 2019-04-18 22:19:42 +02:00
Andreas Kling
3c0afccca0 WindowServer: Improve the look of menu separators. 2019-04-18 19:58:25 +02:00
Andreas Kling
b88f2bc799 WindowServer: Broadcast window icons to newly joined WM listener clients. 2019-04-18 19:42:48 +02:00
Andreas Kling
3817f5f619 Kernel+LibC: Add a DebugLogDevice that forwards everything to I/O port 0xe9.
This is then used to implement the userspace dbgprintf() in a far more
efficient way than what we had before. :^)
2019-04-18 16:08:52 +02:00
Andreas Kling
3b986da643 CEventLoop: Don't call gettimeofday() at all if there are no timers. 2019-04-18 13:23:59 +02:00
Andreas Kling
ae3ec3fc37 LibGUI: Give GTextEditor a context menu.
Now GTextEditor manages its own editing actions (cut/copy/paste/etc) and
will show a context menu containing them when requested.

Apps that want to put a GTextEditor's actions in its menu can get to the
actions via public getters. :^)
2019-04-18 12:28:29 +02:00
Andreas Kling
67d7fc94fc ProcessManager: Do a little less malloc() in the /proc/memstats parsing. 2019-04-18 04:48:53 +02:00
Andreas Kling
ac19fabaaf ProcessManager: Use a single timer for refreshing the view.
Also add a menu for changing the update frequency to some nice values.
2019-04-18 04:38:31 +02:00
Andreas Kling
d73ed74d1c LibCore: Add CTimer::restart() and make set_interval() take effect soon. 2019-04-18 04:38:04 +02:00
Andreas Kling
a747a10eab LibGUI: Refactor context menus to be event-driven instead of declarative.
The declarative approach had way too many limitations. This patch adds a
context menu event that can be hooked to prepare a custom context menu on
demand just-in-time. :^)
2019-04-18 04:12:27 +02:00
Andreas Kling
e74b5bc054 ProcessManager+WindowServer: Do a little less malloc() in CPU monitor code. 2019-04-18 03:37:01 +02:00
Andreas Kling
36a6c10b09 FontEditor: Add a window icon. 2019-04-18 02:30:35 +02:00
Andreas Kling
c7d6e568ba WindowServer: Tweak window icon placement again. 2019-04-18 02:11:44 +02:00
Andreas Kling
7b3876383f LibCore: CIODevice::seek() should reset EOF state. 2019-04-18 02:09:15 +02:00
Andreas Kling
f6b4013329 WindowServer: Make window title bars slightly thicker. :^) 2019-04-18 01:45:52 +02:00
Andreas Kling
8e0611201e CEventLoop: Consolidate gettimeofday() syscalls. 2019-04-18 01:37:23 +02:00
Andreas Kling
ab539460de ProcessManager: Use a CFile for parsing /proc/memstat. 2019-04-18 00:57:34 +02:00
Andreas Kling
c931eaa22c WindowServer: Generate a separate WM event for window icon changes. 2019-04-18 00:39:11 +02:00
Andreas Kling
c4c7f224d5 WindowServer: Use CFile in the CPU monitor code. 2019-04-18 00:12:04 +02:00
Andreas Kling
34087a9f90 LibC: Bring the C library close enough to newlib to trick GCC.
Now we can build GCC with --with-newlib, which hopefully cuts down on weird
toolchain build issues.
2019-04-17 23:16:16 +02:00
Andreas Kling
c02c6fef28 Kernel+ProcessManager: Show per-process syscall counts.
Added a simple syscall counter to the /proc/all contents. :^)
2019-04-17 23:16:14 +02:00
Andreas Kling
c59f8cd663 Kernel: Scheduler donations need to verify that the beneficiary is valid.
Add a Thread::is_thread(void*) helper that we can use to check that the
incoming donation beneficiary is a valid thread. The O(n) here is a bit sad
and we should eventually rethink the process/thread table data structures.
2019-04-17 12:41:51 +02:00
Andreas Kling
6bb0dbe8bf Kernel: Lock::unlock_if_locked() should never donate to holder.
Since we're not interested in taking the lock if it's already held,
there's no need to donate the remainder of our time slice to the holder.
2019-04-17 12:37:44 +02:00
Andreas Kling
18ef6b111b WindowServer: Mouse switching between system menu and app menu was broken. 2019-04-17 12:06:09 +02:00
Andreas Kling
b77f9a5042 VisualBuilder: Pressing the Tab key when there are no widgets is a no-op. 2019-04-16 23:19:19 +02:00
Andreas Kling
428cae7864 VisualBuilder: Pressing the Tab key when there are no widgets is a no-op. 2019-04-16 23:17:14 +02:00
Andreas Kling
ef8c613737 VisualBuilder: Share code for setting the selected widget.
This fixes an issue where the properties window didn't update when selecting
a new widget using the keyboard shortcuts. :^)
2019-04-16 23:11:35 +02:00
Andreas Kling
f7157520eb VisualBuilder: Add some keyboard navigation support.
Allow selecting widgets using the Tab key, and moving them around
using the arrow keys. :^)
2019-04-16 23:01:37 +02:00
Andreas Kling
ac324f14b8 GWidget: Add move_by() and make set_relative_rect() invalidate parent. 2019-04-16 22:59:27 +02:00
Andreas Kling
486ed41fd2 WindowServer: Tweak window icon placement. 2019-04-16 22:37:46 +02:00
Andreas Kling
8251f97858 Terminal: Add a window icon. 2019-04-16 17:55:39 +02:00
Andreas Kling
29abfc8623 ProcessManager: Add a window icon. 2019-04-16 17:55:27 +02:00
Andreas Kling
86361d3d45 WindowServer: Improve the look of menus.
This patch makes menus stand out a bit more from their background by using
the same kind of shading that Windows 2000 had.
2019-04-16 17:02:26 +02:00
Andreas Kling
311019d8ee WindowServer: Don't waste time pre-filling windows with background color.
There's a subsequent pass that fills whatever the backing store didn't
cover anyway, just a few lines later. This was all wasted work.
2019-04-16 15:10:57 +02:00