Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-05-15 | GButton: Allow triggering a "click" by pressing Return when focused. | Andreas Kling | |
2019-05-15 | LibGUI: Support cycling through focusable widgets with Tab and Shift-Tab. | Andreas Kling | |
2019-05-14 | GEventLoop: Rename s_event_fd => s_windowserver_fd. | Andreas Kling | |
2019-05-13 | WindowServer+LibGUI: Handle mouse wheel deltas in the mouse event stream. | Andreas Kling | |
The wheel events will end up in GWidget::mousewheel_event(GMouseEvent&) on the client-side. This patch also implements basic wheel scrolling in GScrollableWidget via this mechanism. :^) | |||
2019-05-12 | Change String&& arguments to const String& in a couple of places. | Andreas Kling | |
String&& is more nuisance than anything, and the codegen improvement is basically negligible since the underlying type is already retainable. | |||
2019-05-11 | GTableView: Update content size immediately on column show/hide. | Andreas Kling | |
2019-05-11 | GTableView: Don't include hidden columns in content width. | Andreas Kling | |
2019-05-10 | GLayout: Default to 4 pixels of spacing(). | Andreas Kling | |
2019-05-10 | GToolBar: Make the framed appearance optional. | Andreas Kling | |
2019-05-10 | LibGUI+WindowServer: Improve checkmark appearance. | Andreas Kling | |
2019-05-10 | GDialog: If no parent window is provided, center dialog on screen. | Andreas Kling | |
2019-05-10 | GTableView: Headers were not usable when the view was scrolled. | Andreas Kling | |
2019-05-10 | GTableView: Make it possible to hide/show columns from a context menu. | Andreas Kling | |
Show a context menu when right clicking the headers of a GTableView, and allow the user to hide/show individual columns. | |||
2019-05-10 | Kernel: Add a writev() syscall for writing multiple buffers in one go. | Andreas Kling | |
We then use this immediately in the WindowServer/LibGUI communication in order to send both message + optional "extra data" with a single syscall. | |||
2019-05-09 | GFilePicker: Add a "new directory" button. | Andreas Kling | |
2019-05-09 | GFilePicker: More work on the file picker, adding a location textbox. | Andreas Kling | |
2019-05-09 | GFilePicker: Add a button for moving up to parent directory. | Andreas Kling | |
2019-05-09 | LibGUI: Remove GModel activations to GAbstractView. | Andreas Kling | |
Now you can hook activation via GAbstractView::on_activation. The design still isn't quite right, we should eventually move the selection away from the model somehow. | |||
2019-05-09 | GLayout: Add a simple spacer concept; dummy item that expands-to-fit. | Andreas Kling | |
A spacer can be inserted anywhere in a layout and will simply expand to fill the available space. This is useful for pushing widgets into place. :^) | |||
2019-05-09 | LibGUI: Start working on a file picker dialog (GFilePicker). | Andreas Kling | |
Have LibGUI adopt GDirectoryModel from FileManager since it fits perfectly for the needs of a file picker. | |||
2019-05-08 | LibGUI: Add some missing class_name() overrides to GDialog and subclasses. | Andreas Kling | |
2019-05-08 | GMessageBox: Add icons to message boxes with 3 standard ones to choose from. | Andreas Kling | |
2019-05-08 | GGroupBox: Rename "name" property to "title" | Andreas Kling | |
2019-05-08 | GTextEditor: Add a readonly mode. | Andreas Kling | |
2019-05-08 | GEventLoop: Calm down with the Vector inline capacity for messages. | Andreas Kling | |
Using nested event loops like this would cause the stack to grow huge. | |||
2019-05-08 | GWindow: Mirror the correct number of pixels to newly created back bitmaps. | Andreas Kling | |
2019-05-08 | GTableView: Fix crash on mousemove when no model is assigned. | Andreas Kling | |
2019-05-08 | GApplication: quit() should have a default exit code of 0. | Andreas Kling | |
2019-05-07 | GSpinBox: Add class_name() override. | Andreas Kling | |
2019-05-07 | GTabWidget: Fill the entire tab widget instead of just the bar. | Andreas Kling | |
There's no guarantee that child widgets will paint everything, so let's have GTabWidget fill itself. | |||
2019-05-07 | GTabWidget: Tweak appearance. | Andreas Kling | |
2019-05-07 | GTabWidget: Highlight tab buttons when hovered. | Andreas Kling | |
The active tab's button doesn't get highlighted, since the highlight is supposed to indicate that the widget can be interacted with. | |||
2019-05-06 | GTableView: Make column resizing work when view is scrolled horizontally. | Andreas Kling | |
2019-05-06 | GTextEditor: set_cursor() should gracefully handle old cursor being invalid. | Andreas Kling | |
Since set_cursor() may be called after arbitrary document changes, it can't rely on the old cursor being valid. To make things simple, if the old cursor is on a line no longer in the document, just repaint the whole editor. | |||
2019-05-06 | Make sure all GraphicsBitmap scanlines are 16-byte aligned. | Andreas Kling | |
This is a prerequisite for some optimizations. | |||
2019-05-05 | ProcessManager+LibGUI: Tweak things to improve ProcessManager look. | Andreas Kling | |
2019-05-05 | GTabWidget: Paint a frame around the container part of the widget. | Andreas Kling | |
Then make the active tab stand out by punching a hole in the frame below its button. | |||
2019-05-05 | GTabWidget: Make a custom look for tab buttons. | Andreas Kling | |
2019-05-05 | LibGUI: Start working on a tabbed widget container: GTabWidget. | Andreas Kling | |
2019-05-05 | GTableView: Fix crash when clicking at random places. | Andreas Kling | |
2019-05-04 | GTableView: Make it possible to resize the columns with the mouse. | Andreas Kling | |
The GModel now merely provides an initial width for the columns. Once that has been queried, the table view manages width from then on. | |||
2019-05-04 | GTableView: Improve look of column headers, and add sort order indicators. | Andreas Kling | |
2019-05-03 | WindowServer+LibGUI: Allow changing whether windows have alpha channels. | Andreas Kling | |
Use this in Terminal to tell the window server to not bother with the alpha channel in the backing store if we're running without transparency. Semi-transparent terminals look neat but they slow everything down, so this keeps things fast while making it easy to switch to the flashy mode. :^) | |||
2019-05-03 | LibGUI+WindowServer: Add a GResizeCorner widget. | Andreas Kling | |
This widget is automatically included in GStatusBar, but can be added in any other place, too. When clicked (with the left button), it initiates a window resize (using a WM request.) In this patch I also fixed up some issues with override cursors being cleared after the WindowServer finishes a drag or resize. | |||
2019-05-02 | GButton: Draw disabled buttons with grayed-out text. | Andreas Kling | |
Based on a patch from "pd" (thanks!) | |||
2019-05-02 | GWidget: Ignore updates if self has !updates_enabled(). | Andreas Kling | |
We were only checking when propagating updates to parents, duh. | |||
2019-05-02 | GWidget: Add set_updates_enabled() for temporarily suppressing updates. | Andreas Kling | |
2019-05-01 | GButton: Update hovered state on mouseover as well. | Andreas Kling | |
We can't rely exclusively on enter and leave events to update the hovered state, since leave will not be delivered while the widget is auto-tracking the mouse (between mousedown and mouseup.) | |||
2019-05-01 | WindowServer+LibGUI: Wait for the extra_data to arrive. | Andreas Kling | |
Since the sockets we use are non-blocking, just slap a select before the second call to read(). This fixes some flakiness seen under load. This should eventually work a bit differently, we could use recv() once it has MSG_WAITALL, and we should not let WindowServer handle all the client connections on the main thread. But for now, this works. Fixes #24. | |||
2019-05-01 | GButton: Handle mousemove correctly while multiple buttons are pressed. | Andreas Kling | |
We should still update the pressed state depending on the event position, even if GMouseButton::Left is not the only button pressed. |