summaryrefslogtreecommitdiff
path: root/Libraries/LibGUI
AgeCommit message (Collapse)Author
2019-07-24LibGUI: Convert Vector<OwnPtr> to NonnullOwnPtrVector.Andreas Kling
This is turning out really nice so far. :^)
2019-07-24Convert HashMap<Key, OwnPtr<T>> to HashMap<Key, NonnullOwnPtr<T>>.Andreas Kling
In every case I found, we never wanted to support null entry values. With NonnullOwnPtr, we can encode that at the type level. :^)
2019-07-23LibGUI: Destroy tooltip windows when they are not used.Andreas Kling
Cached tooltip windows were preventing the automatic event loop shutdown. It's not like we were gaining much by caching these anyway, since we only cached the GWindow, not anything on the WindowServer side.
2019-07-23LibGUI: Get rid of GWindow::should_exit_event_loop_on_close().Andreas Kling
This behavior and API was extremely counter-intuitive since our default behavior was for applications to never exit after you close all of their windows. Now that we exit the event loop by default when the very last GWindow is deleted, we don't have to worry about this.
2019-07-23LibGUI: Exit the main event loop when the last window is deleted.Andreas Kling
This behavior is the new opt-out default. If you don't want your app to exit when the last GWindow is destroyed, call this: - void GApplication::set_quit_set_quit_when_last_window_deleted(bool) Also renamed "windows()" to "reified_windows" in GWindow.cpp to reflect that it only contains GWindows that have a server-side representation. :^)
2019-07-22GDirectoryModel: Don't forget to drain the watch descriptor.Andreas Kling
2019-07-22GDirectoryModel: Automagically update on filesystem changes.Andreas Kling
Use the new watch_file() mechanism to monitor the currently open directory for changes and refresh the model when notified. This makes FileManager automagically show newly added files. :^)
2019-07-21Libraries: Fix wrong paths to "Root" in the various install.sh scripts.Andreas Kling
We were installing libraries into /Libraries/Root, rather than in /Root. This made the ports system behave rather unpredictable, since I had old versions of things in /Root and new versions of things in /Libraries/Root.
2019-07-21Libraries: Remove unused "install" targets.Andreas Kling
We've been using a per-directory "install.sh" for some time, so let's get rid of the old way of doing things.
2019-07-20GWidget: Add set_preferred_size(width, height) overload.Andreas Kling
It was annoying to always write set_preferred_size({ width, height }). :^)
2019-07-20GSplitter: Implement using the orientation-based geometry helpers.Andreas Kling
2019-07-20GSlider: Add support for vertical sliders.Andreas Kling
You now have to pass an Orientation to the GSlider constructor. It's not possible to change the orientation after construction. Added some vertical GSliders to the WidgetGallery demo for testing. :^)
2019-07-20LibDraw: Move the Orientation enum to its own LibDraw header file.Andreas Kling
2019-07-18GFilePicker: OKCancel MsgBox for overwriting filesrhin123
Allow the user to Overwrite/Cancel when writing to an existing file.
2019-07-18LibDraw: Introduce (formerly known as SharedGraphics.)Andreas Kling
Instead of LibGUI and WindowServer building their own copies of the drawing and graphics code, let's it in a separate LibDraw library. This avoids building the code twice, and will encourage better separation of concerns. :^)
2019-07-18SharedBuffer: Split the creation and share stepsRobin Burchell
This allows us to seal a buffer *before* anyone else has access to it (well, ok, the creating process still does, but you can't win them all). It also means that a SharedBuffer can be shared with multiple clients: all you need is to have access to it to share it on again.
2019-07-17LibGUI: Revert GWindowServerConnection to being a singletonRobin Burchell
This was a mistake, of course. Nested event loops don't need (or want) independent server connections. We initialize the connection early in GEventLoop for e.g. users that want to get the size of a GDesktop before the connection has been established. Bug noticed by Andreas, introduced by me ;-)
2019-07-17Rename new IPC headers & classesRobin Burchell
Sticking these in a namespace allows us to use a more generic ("Connection") term without clashing, which is way easier to understand than to try to come up with unique names for both.
2019-07-17Port LibGUI to use CIPCClientSideConnectionRobin Burchell
As a consequence, move to use an explicit handshake() method rather than calling virtuals from the constructor. This seemed to not bother AClientConnection, but LibGUI crashes (rightfully) because of it.
2019-07-16LibGUI: Add input types to GMessageBox.Andreas Kling
Currently the two available input types are: - GMessageBox::InputType::OK (default) - GMessageBox::InputType::OKCancel Based on your choice, GMessageBox::exec() will return ExecOK or ExecCancel.
2019-07-16GFilePicker: Changed file_exists MessageBox to warningrhin123
Forgot to remove Error in the title. Going to be replaced by YesNo GMessagebox in the future.
2019-07-15TextEditorWidget: Added improved save feature.rhin123
Instead of saving to a temp file, the TextEditorWidget now saves to a path returned by the improved GFilePicker.
2019-07-15AK: Add a canonicalized_path() convenience function.Andreas Kling
This is the same as calling FileSystemPath(foo).string(). The majority of clients only care about canonicalizing a path, so let's have an easy way to express that.
2019-07-14WindowServer: Add a custom window type for LauncherRobin Burchell
This keeps it out of the taskbar window list. The stacking order is a little gnarly, but it seems to work OK still.
2019-07-13LibGUI: Add an auto-repeat interval to GAbstractButton.Andreas Kling
Use this in GSpinBox to implement auto-increment / auto-decrement while you are pressing down the respective buttons. :^)
2019-07-11GGroupBox: Allow constructing these without an initial text.Andreas Kling
2019-07-11GSlider: Make the knob width proportional to the range, if in that mode (#288)Lawrence Manning
Regardless of mode, made the knob container clickable so the knob position can be moved without dragging the knob itself. Added a 3rd GSlider to the WidgetGallery showing the proportional mode in action.
2019-07-11GWidget: Make set_font() take either Font* or Font&.Andreas Kling
2019-07-11GToolBar: Make add_action() take a GAction& instead of NonnullRefPtr&&.Andreas Kling
There's very little reason to take NonnullRefPtr&& in arguments really. You can avoid ref-count churn in the cases where ownership is transferred from the caller to the callee, but that's a pretty unusual situation and not worth optimizing for at this stage.
2019-07-11GLabel: Make set_icon() take a GraphicsBitmap*.Andreas Kling
Taking a RefPtr<GraphicsBitmap>&& was just making things unnecessarily complicated for clients, and didn't actually improve anything.
2019-07-11LibGUI: Remove use of copy_ref().Andreas Kling
2019-07-10GWidget: Add "set_autofill" as an alias for set_fill_with_background_color.Andreas Kling
2019-07-10GWidget: Add placeholder setters for the backcolor/forecolor properties.Andreas Kling
2019-07-09LibGUI: Add GActionGroup, a way to group a bunch of GActions.Andreas Kling
This can be used to make a bunch of actions mutually exclusive. This patch only implements the exclusivity behavior for buttons.
2019-07-09GAction: Remove "custom_data" and the related convenience constructors.Andreas Kling
This mechanism was never actually used, just something I imagined would be useful while I was first creating the class.
2019-07-08Kernel: Have the open() syscall take an explicit path length parameter.Andreas Kling
Instead of computing the path length inside the syscall handler, let the caller do that work. This allows us to implement to new variants of open() and creat(), called open_with_path_length() and creat_with_path_length(). These are suitable for use with e.g StringView.
2019-07-08StringView: Rename characters() to characters_without_null_termination().Andreas Kling
This should make you think twice before trying to use the const char* from a StringView as if it's a null-terminated string.
2019-07-07GStackWidget: Add a notification hook for when the active widget changes.Andreas Kling
2019-07-04Libraries: Unbreak "make install" with new directory locations.Andreas Kling
2019-07-04Libraries: Create top level directory for libraries.Andreas Kling
Things were getting a little crowded in the project root, so this patch moves the Lib*/ directories into Libraries/.