summaryrefslogtreecommitdiff
path: root/LibGUI
AgeCommit message (Collapse)Author
2019-05-15GButton: Allow triggering a "click" by pressing Return when focused.Andreas Kling
2019-05-15LibGUI: Support cycling through focusable widgets with Tab and Shift-Tab.Andreas Kling
2019-05-14GEventLoop: Rename s_event_fd => s_windowserver_fd.Andreas Kling
2019-05-13WindowServer+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-12Change 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-11GTableView: Update content size immediately on column show/hide.Andreas Kling
2019-05-11GTableView: Don't include hidden columns in content width.Andreas Kling
2019-05-10GLayout: Default to 4 pixels of spacing().Andreas Kling
2019-05-10GToolBar: Make the framed appearance optional.Andreas Kling
2019-05-10LibGUI+WindowServer: Improve checkmark appearance.Andreas Kling
2019-05-10GDialog: If no parent window is provided, center dialog on screen.Andreas Kling
2019-05-10GTableView: Headers were not usable when the view was scrolled.Andreas Kling
2019-05-10GTableView: 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-10Kernel: 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-09GFilePicker: Add a "new directory" button.Andreas Kling
2019-05-09GFilePicker: More work on the file picker, adding a location textbox.Andreas Kling
2019-05-09GFilePicker: Add a button for moving up to parent directory.Andreas Kling
2019-05-09LibGUI: 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-09GLayout: 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-09LibGUI: 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-08LibGUI: Add some missing class_name() overrides to GDialog and subclasses.Andreas Kling
2019-05-08GMessageBox: Add icons to message boxes with 3 standard ones to choose from.Andreas Kling
2019-05-08GGroupBox: Rename "name" property to "title"Andreas Kling
2019-05-08GTextEditor: Add a readonly mode.Andreas Kling
2019-05-08GEventLoop: 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-08GWindow: Mirror the correct number of pixels to newly created back bitmaps.Andreas Kling
2019-05-08GTableView: Fix crash on mousemove when no model is assigned.Andreas Kling
2019-05-08GApplication: quit() should have a default exit code of 0.Andreas Kling
2019-05-07GSpinBox: Add class_name() override.Andreas Kling
2019-05-07GTabWidget: 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-07GTabWidget: Tweak appearance.Andreas Kling
2019-05-07GTabWidget: 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-06GTableView: Make column resizing work when view is scrolled horizontally.Andreas Kling
2019-05-06GTextEditor: 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-06Make sure all GraphicsBitmap scanlines are 16-byte aligned.Andreas Kling
This is a prerequisite for some optimizations.
2019-05-05ProcessManager+LibGUI: Tweak things to improve ProcessManager look.Andreas Kling
2019-05-05GTabWidget: 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-05GTabWidget: Make a custom look for tab buttons.Andreas Kling
2019-05-05LibGUI: Start working on a tabbed widget container: GTabWidget.Andreas Kling
2019-05-05GTableView: Fix crash when clicking at random places.Andreas Kling
2019-05-04GTableView: 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-04GTableView: Improve look of column headers, and add sort order indicators.Andreas Kling
2019-05-03WindowServer+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-03LibGUI+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-02GButton: Draw disabled buttons with grayed-out text.Andreas Kling
Based on a patch from "pd" (thanks!)
2019-05-02GWidget: Ignore updates if self has !updates_enabled().Andreas Kling
We were only checking when propagating updates to parents, duh.
2019-05-02GWidget: Add set_updates_enabled() for temporarily suppressing updates.Andreas Kling
2019-05-01GButton: 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-01WindowServer+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-01GButton: 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.