summaryrefslogtreecommitdiff
path: root/LibGUI
AgeCommit message (Collapse)Author
2019-04-05WindowServer: Merge WM_WindowAdded and WM_WindowStateChanged.Andreas Kling
These events are identical, so it's silly to send both. Just broadcast window state changes everywhere instead, it doesn't matter when it was added as clients are learning about this asynchronously anyway.
2019-04-05AK: Revert Eternal<T> for now since it doesn't work as intended.Andreas Kling
2019-04-04Taskbar: Only include "Normal" windows in the taskbar window list.Andreas Kling
2019-04-04LibGUI: Use TextElision::Right for GButton captions.Andreas Kling
2019-04-04LibGUI: Allow specifying GButton text alignment.Andreas Kling
2019-04-04Taskbar: Plumb window active state from the WindowServer to the taskbar.Andreas Kling
2019-04-04LibGUI: Make it possible for GButton to be checkable.Andreas Kling
2019-04-04Taskbar: More bringup work. We now see a basic window list.Andreas Kling
2019-04-03Taskbar+LibGUI: More work on bringup.Andreas Kling
2019-04-03Taskbar: Start working on a taskbar app.Andreas Kling
I originally thought I would do this inside WindowServer, but let's try to make it as a standalone app that communicates with WindowServer instead. That will allow us to use LibGUI. :^)
2019-04-03WindowServer: Broadcast screen rect changes to all clients.Andreas Kling
GUI clients can now obtain the screen rect via GDesktop::rect().
2019-04-03AK: Add Eternal<T> and use it in various places.Andreas Kling
This is useful for static locals that never need to be destroyed: Thing& Thing::the() { static Eternal<Thing> the; return the; } The object will be allocated in data segment memory and will never have its destructor invoked.
2019-04-03GWindow: Don't ignore update(), it should repaint the whole window.Andreas Kling
This was causing some apps to have an empty window on startup since the call to update() in show() was effectively a no-op.
2019-04-02GInputBox: Make the input text box a bit taller.Andreas Kling
2019-04-02GSocket: Add a connect() overload that takes a hostname instead of an IP.Andreas Kling
2019-04-02Move NetworkOrdered.h to AK/ since it's used in both kernel and userspace.Andreas Kling
2019-04-02GTreeView: Support navigating the tree with the up/down keys.Andreas Kling
2019-04-02LibGUI: Switch to a resizing cursor when hovering or using a GSplitter.Andreas Kling
Also expose the various standard cursors on WSWindowManager so they can be reused by the override mechanism.
2019-04-01LibGUI: Fix broken doubleclick detection due to uninitialized GElapsedTimer.Andreas Kling
2019-03-31WindowServer: Add support for per-window override cursors.Andreas Kling
Use this to implement automatic switching to an I-beam cursor when hovering over a GTextEditor. :^)
2019-03-30Terminal+LibGUI: Make the terminal cursor blink.Andreas Kling
Added a GTimer class to help with this. It's just a simple GObject subclass that sets up an event loop timer and invokes a callback on timeout.
2019-03-30LibGUI: Fix bad initial layout of GScrollableWidget's scrollbars.Andreas Kling
If it's the first time we're laying these out, we can't rely on the width() or height() to be set, so instead use preferred_size().
2019-03-30LibGUI: Highlight the GSplitter when hovering over it.Andreas Kling
2019-03-30LibGUI: Add a simple GSplitter container widget.Andreas Kling
This allows you to put multiple widgets in a container and makes the space in between them draggable to resize the two adjacent widgets.
2019-03-30FileManager: Tweak look of thumbnailing progress bar.Andreas Kling
Since it's inside a status bar, it looks a bit better when using a panel shape with sunken shadow.
2019-03-30GTreeView: Notify the GScrollableWidget about content size changes.Andreas Kling
This makes the tree view scrollable at last.
2019-03-30GFileSystemModel: Don't reload icons every time they are requested.Andreas Kling
This was really slugging up the interactive resizing. :^)
2019-03-30GTreeView: Remove test model I was using during bringup.Andreas Kling
2019-03-30GTreeView: Handle the item expand/collapse toggles separately.Andreas Kling
2019-03-30GTreeView: On model selection change, open the selected index.Andreas Kling
2019-03-30FileManager: Make the tree view follow the directory view navigations.Andreas Kling
2019-03-30FileManager: Make the directory view follow the tree view selection.Andreas Kling
2019-03-30GFileSystemModel: Add a special icon for the selected folder.Andreas Kling
I don't know if this will always make sense but it does make sense within the only current client (FileManager) so let's go with it for now.
2019-03-30GTreeView: Tweak line tree back and forth a bit.Andreas Kling
2019-03-29GTreeView: Add basic selection support.Andreas Kling
2019-03-29GTreeView: Add expand/collapse buttons to items with children.Andreas Kling
2019-03-29LibGUI: Draw a 1px line tree alongside the GTreeView icons.Andreas Kling
2019-03-29GTreeView: More implementation work.Andreas Kling
2019-03-29GTreeView: Factor paint traversal into a shared function.Andreas Kling
This way it can be used by hit testing as well, guaranteeing that everything stays consistent.
2019-03-29GFileSystemModel: Add a "DirectoriesOnly" mode.Andreas Kling
2019-03-29LibGUI: Start working on a GFileSystemModel and hook that up in FileManager.Andreas Kling
This is a read-only model for the tree view, at least initially. We'll see where we take it from there once it's more polished.
2019-03-29Rename Painter::set_clip_rect() to add_clip_rect().Andreas Kling
It was confusing to see multiple calls to set_foo() in a row. Since this is an intersecting operation, let's call it add_clip_rect() instead.
2019-03-29GTreeView: A bunch of work on the tree view.Andreas Kling
2019-03-29LibGUI: Expand GModelIndex a bit, adding internal data and model pointers.Andreas Kling
This will be useful for implementing more complicated models.
2019-03-29LibGUI: Start working on a GTreeView class.Andreas Kling
2019-03-29GModel: Add GModelIndex argument to row_count() and column_count().Andreas Kling
This is in preparation for supporting hierarchical models.
2019-03-29GScrollableWidget: Make sure the corner widget is positioned correctly.Andreas Kling
2019-03-29GScrollBar: Make the scrubber size proportional to the scrollable range.Andreas Kling
2019-03-29LibGUI: Remove debug spam in GWidget::spans_entire_window_horizontally().Andreas Kling
2019-03-29LibGUI: Don't draw left and right side of surfaces that span entire window.Andreas Kling
In other words, if a surface stretches from the left side of the window all the way to the right side, skip shading and highlighting the sides. This makes widgets blend together just slightly with the window. :^)