summaryrefslogtreecommitdiff
path: root/LibGUI
AgeCommit message (Collapse)Author
2019-05-25LibGUI: Notify widgets when their enabled state changes.Andreas Kling
This is done by dispatching a (synchronous) "EnabledChange" event that can be picked up in change_event(). Use this event to kick widgets out of their "being pressed"-type modes if the user is interacting with them while the state is programmatically changed.
2019-05-25LibGUI: Elide the text in GCheckBox and GRadioButton when low on space.Andreas Kling
2019-05-24WindowServer: Make it possible to turn off window title bars (#88)Christopher Dumas
Also, Launcher now does not use titlebars. Only check if titlebar should be shown if the window type works with that.
2019-05-24GSlider: Ignore mouse events when disabled.Andreas Kling
2019-05-24GLabel: Paint the text with a disabled look when appropriate.Andreas Kling
Also turn on right-side text elision in all cases by default.
2019-05-24LibGUI: When tabbing between focusable widgets, skip over disabled ones.Andreas Kling
2019-05-24LibGUI: Share code for text painting in GAbstractButton.Andreas Kling
This gives all the GAbstractButton a consistent disabled appearance.
2019-05-24Demos: Start working on a simple WidgetGallery app.Andreas Kling
It's good to have a place where we can try out all the different widgets. This needs some more work on a nice layout, and should also include more of the widgets. :^)
2019-05-24GRadioButton: Draw a focus rect when focused.Andreas Kling
2019-05-24LibGUI: Make GCheckBox inherit from GAbstractButton.Andreas Kling
2019-05-24LibGUI: Add a GAbstractButton base class for button widgets.Andreas Kling
This patch moves GButton and GRadioButton to inherit from it. This allows them to share code for mouse event handling, etc.
2019-05-24LibGUI: Don't crash when updating menu item that's not in the window server ↵Christopher Dumas
(#83) Don't crash when updating menu item that's not in the window server. Menu Items begin with an invalid ID of -1, and only get a valid ID if the menu they are attached to is added to the window server. They don't send updates to the server unless they have a valid ID. Fixes #82
2019-05-24LibGUI: Add a GRadioButton widget.Andreas Kling
Radio buttons are automagically exclusive with other radio button children of the same parent. :^)
2019-05-21GWindow: Only flip the window backing stores once per paint event.Andreas Kling
2019-05-20GEventLoop: Make the WindowServer connection use a blocking socket.Andreas Kling
2019-05-20Kernel: Report EAGAIN from read() on a non-blocking socket if the buffer is ↵Robin Burchell
empty This is not EOF, and never should have been so -- can trip up other code when porting. Also updates LibGUI and WindowServer which both relied on the old behaviour (and didn't work without changes). There may be others, but I didn't run into them with a quick inspection.
2019-05-17WindowServer: Add support for fullscreen windows.Andreas Kling
Fullscreen windows are rendered alone and above everything else when they are active, and as part of the regular window stack order when something else is active. Currently windows cannot be made fullscreen after-the-fact, but must have the fullscreen flag included in their CreateWindow message. It should not possible to interact with the menu, taskbar or window frame while the active window is fullscreened. :^)
2019-05-17Build: Install most headers to Root (and libcore.a/libgui.a)Robin Burchell
This makes out-of-tree linking possible. And at the same time, add a CMakeToolchain.txt file that can be used to build arbitrary cmake-using applications on Serenity by pointing to the CMAKE_TOOLCHAIN_FILE when running cmake: -DCMAKE_TOOLCHAIN_FILE=~/code/serenity/Toolchain/CMakeToolchain.txt
2019-05-17GInputBox: Use whichever is greater: the approximate size of the title, or ↵Robin Burchell
the label's text Might be an idea to add a minimum size constrain in window server instead, since it knows the exact dimensions? But this is a simple fix that seems to do the job.
2019-05-16GFilePicker: Remove the frame around the little toolbar.Andreas Kling
2019-05-16GButton: Only draw focus rect if there is a caption text.Andreas Kling
2019-05-16GFilePicker: Make the path selected accessible externallyRobin Burchell
2019-05-16GTextEditor: Introduce triple click to select allRobin Burchell
2019-05-16GTextEditor: Minor cleanupRobin Burchell
Remove an unnecessary layer of nesting
2019-05-16WindowServer/GMenu: Adjust the popup position to fit the window inside the ↵Robin Burchell
screen Rather than passing a "top_anchored" bool. Fixes #22.
2019-05-15Move double click events from LibGUI to the window serverRobin Burchell
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