Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-04-05 | WindowServer: 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-05 | AK: Revert Eternal<T> for now since it doesn't work as intended. | Andreas Kling | |
2019-04-04 | Taskbar: Only include "Normal" windows in the taskbar window list. | Andreas Kling | |
2019-04-04 | LibGUI: Use TextElision::Right for GButton captions. | Andreas Kling | |
2019-04-04 | LibGUI: Allow specifying GButton text alignment. | Andreas Kling | |
2019-04-04 | Taskbar: Plumb window active state from the WindowServer to the taskbar. | Andreas Kling | |
2019-04-04 | LibGUI: Make it possible for GButton to be checkable. | Andreas Kling | |
2019-04-04 | Taskbar: More bringup work. We now see a basic window list. | Andreas Kling | |
2019-04-03 | Taskbar+LibGUI: More work on bringup. | Andreas Kling | |
2019-04-03 | Taskbar: 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-03 | WindowServer: Broadcast screen rect changes to all clients. | Andreas Kling | |
GUI clients can now obtain the screen rect via GDesktop::rect(). | |||
2019-04-03 | AK: 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-03 | GWindow: 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-02 | GInputBox: Make the input text box a bit taller. | Andreas Kling | |
2019-04-02 | GSocket: Add a connect() overload that takes a hostname instead of an IP. | Andreas Kling | |
2019-04-02 | Move NetworkOrdered.h to AK/ since it's used in both kernel and userspace. | Andreas Kling | |
2019-04-02 | GTreeView: Support navigating the tree with the up/down keys. | Andreas Kling | |
2019-04-02 | LibGUI: 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-01 | LibGUI: Fix broken doubleclick detection due to uninitialized GElapsedTimer. | Andreas Kling | |
2019-03-31 | WindowServer: 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-30 | Terminal+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-30 | LibGUI: 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-30 | LibGUI: Highlight the GSplitter when hovering over it. | Andreas Kling | |
2019-03-30 | LibGUI: 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-30 | FileManager: 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-30 | GTreeView: Notify the GScrollableWidget about content size changes. | Andreas Kling | |
This makes the tree view scrollable at last. | |||
2019-03-30 | GFileSystemModel: Don't reload icons every time they are requested. | Andreas Kling | |
This was really slugging up the interactive resizing. :^) | |||
2019-03-30 | GTreeView: Remove test model I was using during bringup. | Andreas Kling | |
2019-03-30 | GTreeView: Handle the item expand/collapse toggles separately. | Andreas Kling | |
2019-03-30 | GTreeView: On model selection change, open the selected index. | Andreas Kling | |
2019-03-30 | FileManager: Make the tree view follow the directory view navigations. | Andreas Kling | |
2019-03-30 | FileManager: Make the directory view follow the tree view selection. | Andreas Kling | |
2019-03-30 | GFileSystemModel: 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-30 | GTreeView: Tweak line tree back and forth a bit. | Andreas Kling | |
2019-03-29 | GTreeView: Add basic selection support. | Andreas Kling | |
2019-03-29 | GTreeView: Add expand/collapse buttons to items with children. | Andreas Kling | |
2019-03-29 | LibGUI: Draw a 1px line tree alongside the GTreeView icons. | Andreas Kling | |
2019-03-29 | GTreeView: More implementation work. | Andreas Kling | |
2019-03-29 | GTreeView: 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-29 | GFileSystemModel: Add a "DirectoriesOnly" mode. | Andreas Kling | |
2019-03-29 | LibGUI: 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-29 | Rename 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-29 | GTreeView: A bunch of work on the tree view. | Andreas Kling | |
2019-03-29 | LibGUI: Expand GModelIndex a bit, adding internal data and model pointers. | Andreas Kling | |
This will be useful for implementing more complicated models. | |||
2019-03-29 | LibGUI: Start working on a GTreeView class. | Andreas Kling | |
2019-03-29 | GModel: Add GModelIndex argument to row_count() and column_count(). | Andreas Kling | |
This is in preparation for supporting hierarchical models. | |||
2019-03-29 | GScrollableWidget: Make sure the corner widget is positioned correctly. | Andreas Kling | |
2019-03-29 | GScrollBar: Make the scrubber size proportional to the scrollable range. | Andreas Kling | |
2019-03-29 | LibGUI: Remove debug spam in GWidget::spans_entire_window_horizontally(). | Andreas Kling | |
2019-03-29 | LibGUI: 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. :^) |