summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGUI
AgeCommit message (Collapse)Author
2021-02-20LibGUI: Always set tree column content width to widest open nodethankyouverycool
Fixes hidable horizontal scrollbars remaining visible even after collapsing their responsible nodes. Tree column width defaults to column header width if wider than current content.
2021-02-20LibGUI: Recheck size excesses when scrollbars become visiblethankyouverycool
Fixes edge cases in which hidden scrollbars could become visible and obscure content or fail to hide when no longer needed
2021-02-20LibGUI: Set IconView content width to actual content onlythankyouverycool
Fixes incorrect excess size reporting when updating scrollbars and allows horizontal scrolling if IconView is resized smaller than a single column
2021-02-20LibGUI: Allow setting a tooltip on BreadcrumbBar segmentsAndreas Kling
2021-02-20LibGUI: Ignore keydown events with Alt modifier in AbstractViewAndreas Kling
AbstractView doesn't actually do anything with them anyway, but they would get swallowed by the cursor logic and not bubble up the widget parent chain.
2021-02-20LibGUI: Parent FilePicker toolbar buttons to the windowAndreas Kling
This makes the shortcuts actually work since unparented actions are considered application-global, and we disable application-global shortcuts while a modal dialog (like FilePicker) is up. This is pretty counter-intuitive so I think there's room for API improvement here but let's at least make Alt+Up work in FilePicker for now. :^)
2021-02-20LibGUI: Use delegating constructors in GUI::ActionAndreas Kling
2021-02-20LibGUI: Tidy up Action constructors and factory functions a bitAndreas Kling
2021-02-20LibGUI: Set InputBox initial value to text_value stringLinus Groh
2021-02-20LibGUI: Swap order of InputBox value and parent window argsLinus Groh
This is now consistent with the other dialog classes.
2021-02-19LibGUI: Remove GUI::FilePicker::file_exists()Andreas Kling
I have no idea why this existed but everyone should just use Core::File::exists() instead. :^)
2021-02-19LibGUI: Port GUI::FilePicker to GML and improve the layoutAndreas Kling
Also remove the image preview feature as it was rather ugly. If we bring it back we should it should look good.
2021-02-19LibGUI: Register GUI::MultiViewAndreas Kling
2021-02-17LibGUI: Correctly handle ComboBox list windows of less than three items ↵Nick Vella
(~50px) in height. By default, a Window has a minimum size of 50x50 - ComboBox lists aren't always this tall. We now set the minimum height of the ComboBox Window according to the height of three items, or the total height of all the items in the list, whichever is smaller. This means there is no longer any unpainted space in the list window due to the shortfall between the ListBox widget and Window heights, and the ComboBox list window always remains a comfortable height for viewing. :^)
2021-02-17LibGUI: Convert dbgprintf() => dbgln()Andreas Kling
2021-02-16LibGUI: Make Model::data_matches() take Variant by const-referenceAndreas Kling
2021-02-16LibGUI: Add ScrollableWidget to forwarding headerAndreas Kling
2021-02-16LibGUI: Set correct ranges for hidable scrollbarsthankyouverycool
Fixes vertical and horizontal overscroll in widgets that allow unnecessary scrollbars to be hidden.
2021-02-16WindowServer+LibGUI+LibGfx: Add WindowType::ToolWindowAndreas Kling
Tool windows are secondary windows with a smaller title bar. The sit on the layer above normal windows, and cannot be minimized. These are intended for complex yet non-modal interactions with the content of a primary window, such as find/replace windows, property windows, etc.
2021-02-16WindowServer, LibGUI: Variable minimum window sizesNick Vella
Minimum window size can now be customised and set at runtime via the SetWindowMinimumSize WindowServer message and the set_minimum_size LibGUI::Window method. The default minimum size remains at 50x50. Some behind-the-scenes mechanics had to be added to LibGUI::Window to ensure that the minimum size is remembered if set before the window is shown. WindowServer sends a resize event to the client if it requests a size on create that's smaller than it's minimum size.
2021-02-15WindowServer: Add support for alpha channel based hit testingTom
This enables implementing non-rectangular window shapes, including non-rectangular window frames.
2021-02-15LibGUI: Open context menu on 'Menu' key downJean-Baptiste Boric
2021-02-15LibGUI: Make TextEditor write a trailing newline to non-empty filesAndreas Kling
Fixes #4801.
2021-02-15LibGUI: Use a ScopeGuard to close the fd in TextEditor::write_to_file()Andreas Kling
2021-02-15LibGUI: Fix bogus TextEditor selection when cursor dragged outside viewAndreas Kling
If the cursor Y position is < 0 in content coordinate space, we should always map that to the first line of the file. This fixes unexpected cursor behavior when dragging the selection above the top of the document.
2021-02-15LibGUI: Add some default sizes for TTF fonts in FontPickerStephan Unverwerth
2021-02-15LibGUI+LibGfx+LibTTF: Make fontpicker handle TTF fontsStephan Unverwerth
2021-02-13LibGUI: add 'always_wrap_item_labels' property to IconView.Nick Vella
In some circumstances (like template selection dialogs,) displaying as much item label as possible, on all items, may be desired. The default setting is 'false', which matches the default behaviour from before; only wrapping on hover or selection.
2021-02-12WindowServer: Recompute occlusions when changing window's alpha channelTom
Fixes #4845
2021-02-11LibSyntax: Make rehighlight() take Gfx::Palette as by const-referenceAndreas Kling
2021-02-11LibGUI: Use Core::FileWatcher in FileSystemModelDexesTTP
This replaces the manual watch_file and Notifier handling with the new Core::FileWatcher wrapper, which reduces the manual handling and makes the code easier to reason about :^)
2021-02-09LibGUI: TextEditor widget should default to no wrappingAndreas Kling
Since we don't support wrapping in right-aligned text mode, let's keep the old behavior of wrapping being off-by-default for now. Fixes #5275.
2021-02-08Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...)AnotherTest
Replacement made by `find Kernel Userland -name '*.h' -o -name '*.cpp' | sed -i -Ee 's/dbgln\b<(\w+)>\(/dbgln_if(\1, /g'`
2021-02-07LibGUI: Add missing "final" in TextEditorAndreas Kling
2021-02-07Shell: Move Shell syntax highlighter LibShellAndreas Kling
2021-02-07LibSyntax+LibGUI+LibJS: Move JS syntax highlighter to LibJSAndreas Kling
This is a little bit messy but the basic idea is: Syntax::Highlighter now has a Syntax::HighlighterClient to talk to the outside world. It mostly communicates in LibGUI primitives that are available in headers, so inlineable. GUI::TextEditor inherits from Syntax::HighlighterClient. This let us to move GUI::JSSyntaxHighlighter to JS::SyntaxHighlighter and remove LibGUI's dependency on LibJS.
2021-02-07LibGfx: Make Color(NamedColor) inline and constexprAndreas Kling
2021-02-07LibSyntax: Move GUI::Highlighter to Syntax::Highlighter in LibSyntaxAndreas Kling
This is a move towards dropping more LibGUI dependencies.
2021-02-07LibGUI+LibCpp: Move C++ syntax highlighter to LibCppAndreas Kling
This makes LibGUI not depend on LibCpp.
2021-02-03Everywhere: Remove some bitrotted "#if 0" blocksAndreas Kling
2021-02-03TextEditor: Implement word wrappingZac
Add a new wrapping mode to the TextEditor that will wrap lines at the spaces between words. Replace the previous menubar checkbox 'Wrapping Mode' in HackStudio and the TextEditor with an exclusive submenu which allows switching between 'No wrapping', 'Wrap anywhere' and 'Wrap at words'. 'Wrap anywhere' (the new 'Wrap lines') is still the default mode. Setting the wrapping mode in the constructors of the TextEditorWidget and HackStudio has been removed, it is now set when constructing the menubar actions.
2021-02-02Revert "StatusBar: Allow GML files to set the number of labels to create"Andreas Kling
This reverts commit e11ec20650e5182f47675210dcd71e7301c34905. Broke FileManager, Browser, etc.
2021-02-02Revert "TextEditor: Add vim status indicators to the statusbar"Andreas Kling
This reverts commit bd6d0d229581e830c7a69cdb29252b9f63e0434a.
2021-02-02TextEditor: Add vim status indicators to the statusbarZac
When using the VimEditingEngine in the TextEditor, vim's mode and the previous key are shown in the editor's statusbar.
2021-02-02StatusBar: Allow GML files to set the number of labels to createZac
2021-02-01LibIPC: Stop sending client ID to clientsAndreas Kling
The client ID is not useful to normal clients anymore, so stop telling everyone what their ID is.
2021-02-01LibGUI+WindowServer: Don't use a WM IPC to initiate own window resizeAndreas Kling
The WM_* IPC messages are intended for "outsider" window management, not for a client's own windows. Make a separate StartWindowResize message for this. This was the only reason that every IPC client had to know its server side client ID.
2021-01-30LibGUI: Handle Window::hide() during Application teardown betterAndreas Kling
If a window is being torn down during app shutdown, the global application pointer may be nulled out already. So let's handle that case gracefully in Window::hide().
2021-01-28Vim: Add change word and delete word functionalityZac
Add the functionality of key sequences 'cw', 'ce', 'cb', 'dw', 'de' and 'db'.
2021-01-27HackStudio: Integate with C++ parser-based autocompleteItamar
By default, C++ auto completion will still be performed by the lexer-based logic. However, the parser-based logic can be switched on via the menubar.