1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:38:11 +00:00
serenity/Libraries/LibGUI
Tom 75f61fe3d9 AK: Make RefPtr, NonnullRefPtr, WeakPtr thread safe
This makes most operations thread safe, especially so that they
can safely be used in the Kernel. This includes obtaining a strong
reference from a weak reference, which now requires an explicit
call to WeakPtr::strong_ref(). Another major change is that
Weakable::make_weak_ref() may require the explicit target type.
Previously we used reinterpret_cast in WeakPtr, assuming that it
can be properly converted. But WeakPtr does not necessarily have
the knowledge to be able to do this. Instead, we now ask the class
itself to deliver a WeakPtr to the type that we want.

Also, WeakLink is no longer specific to a target type. The reason
for this is that we want to be able to safely convert e.g. WeakPtr<T>
to WeakPtr<U>, and before this we just reinterpret_cast the internal
WeakLink<T> to WeakLink<U>, which is a bold assumption that it would
actually produce the correct code. Instead, WeakLink now operates
on just a raw pointer and we only make those constructors/operators
available if we can verify that it can be safely cast.

In order to guarantee thread safety, we now use the least significant
bit in the pointer for locking purposes. This also means that only
properly aligned pointers can be used.
2020-11-10 19:11:52 +01:00
..
AboutDialog.cpp LibGUI: Tweak "OK" button height in GUI::AboutDialog 2020-10-26 21:01:45 +01:00
AboutDialog.h LibGUI, About: Implement system-wide W2k-esque About dialog 2020-05-27 11:44:19 +02:00
AbstractButton.cpp LibGUI: Fix null parent deref in AbstractButton::set_checked() 2020-10-30 17:03:29 +01:00
AbstractButton.h LibGUI: Add Widget focus policies 2020-10-30 17:03:28 +01:00
AbstractTableView.cpp LibGUI: Make table view row height+padding font-size-relative 2020-10-25 10:12:03 +01:00
AbstractTableView.h LibGUI: Make table view row height+padding font-size-relative 2020-10-25 10:12:03 +01:00
AbstractView.cpp LibGUI: Prevent multiple drag initiations while drag messages are passed 2020-11-08 21:46:13 +01:00
AbstractView.h LibGUI: Prevent multiple drag initiations while drag messages are passed 2020-11-08 21:46:13 +01:00
Action.cpp Base: Move 16x16 common icons to /res/icons/16x16/ 2020-08-27 15:38:02 +02:00
Action.h LibGUI: Add a save_as common action 2020-08-25 09:46:28 +02:00
ActionGroup.cpp LibGUI: Remove leading G from filenames 2020-02-06 20:33:02 +01:00
ActionGroup.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Application.cpp AK: Make RefPtr, NonnullRefPtr, WeakPtr thread safe 2020-11-10 19:11:52 +01:00
Application.h LibGUI: Update active tooltip when source widget changes the label 2020-08-15 13:45:08 +02:00
BoxLayout.cpp LibCore: Make Core::Object properties more dynamic 2020-09-15 21:46:26 +02:00
BoxLayout.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Button.cpp AK: Make RefPtr, NonnullRefPtr, WeakPtr thread safe 2020-11-10 19:11:52 +01:00
Button.h LibGUI: Add Widget focus policies 2020-10-30 17:03:28 +01:00
Calendar.cpp LibGUI: Remove spacing between day labels in Calendar 2020-08-23 11:22:21 +02:00
Calendar.h LibGUI+Calendar: Make Calendar a common widget in LibGUI 2020-08-22 11:54:30 +02:00
CheckBox.cpp LibGUI+LibGfx: Improve focus rect appearance 2020-10-26 21:01:45 +01:00
CheckBox.h LibGUI: Include keyboard modifier state with button on_click calls 2020-05-12 20:31:16 +02:00
Clipboard.cpp AK: Add trivial structure validation to SharedBuffer 2020-10-02 15:38:07 +02:00
Clipboard.h AK: Resolve format related circular dependencies properly. 2020-09-23 21:45:28 +02:00
CMakeLists.txt LibGfx: Move FontDatabase from LibGUI to LibGfx 2020-10-31 13:56:21 +01:00
ColorInput.cpp LibGUI: Use widget override cursors in ColorInput 2020-09-11 14:51:02 +02:00
ColorInput.h LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSize 2020-06-10 10:59:04 +02:00
ColorPicker.cpp Everywhere: Fix typos 2020-10-02 16:03:17 +02:00
ColorPicker.h LibGUI: Update color widgets when has_alpha is toggled in ColorPicker 2020-09-26 19:55:54 +02:00
ColumnsView.cpp LibGUI: Paint a focus rect around the cursor index in ColumnsView 2020-10-27 16:20:20 +01:00
ColumnsView.h LibGUI: Move keyboard item activation up to AbstractView 2020-09-24 21:35:47 +02:00
ComboBox.cpp LibGUI: Add Widget focus policies 2020-10-30 17:03:28 +01:00
ComboBox.h LibGUI: Add ComboBox::selected_index() 2020-08-21 21:16:13 +02:00
Command.cpp LibGUI: Remove leading G from filenames 2020-02-06 20:33:02 +01:00
Command.h HackStudio: Add C++ Language Server 2020-09-30 21:46:59 +02:00
ControlBoxButton.cpp LibGUI: Add ControlBoxButton to LibGUI 2020-07-20 21:03:48 +02:00
ControlBoxButton.h LibGUI: Add ControlBoxButton to LibGUI 2020-07-20 21:03:48 +02:00
CppSyntaxHighlighter.cpp LibCpp: Add library for working with c++ code 2020-09-30 21:46:59 +02:00
CppSyntaxHighlighter.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Desktop.cpp FileManager: Apply wallpaper on startup 2020-08-17 17:47:14 +02:00
Desktop.h FileManager: Apply wallpaper on startup 2020-08-17 17:47:14 +02:00
Dialog.cpp LibGUI: Don't center dialog within parent if window is not visible 2020-08-16 16:37:39 +02:00
Dialog.h LibGUI: Don't use Core::Object::add() to instantiate dialogs 2020-03-04 21:04:06 +01:00
DisplayLink.cpp WindowServer+LibGUI: Add a way to get notified at display refresh rate 2020-03-22 21:13:23 +01:00
DisplayLink.h WindowServer+LibGUI: Add a way to get notified at display refresh rate 2020-03-22 21:13:23 +01:00
DragOperation.cpp LibGUI+WindowServer: Make DragOperation hold a MimeData instance 2020-11-08 21:46:13 +01:00
DragOperation.h LibGUI+WindowServer: Make DragOperation hold a MimeData instance 2020-11-08 21:46:13 +01:00
EmojiInputDialog.cpp Unicode: Try s/codepoint/code_point/g again 2020-08-05 22:33:42 +02:00
EmojiInputDialog.h LibGUI: Add a simple emoji input dialog activated by Ctrl+Alt+Space :^) 2020-05-17 22:35:25 +02:00
Event.cpp Userspace: Remove a bunch of unnecessary Kernel/API/KeyCode.h includes 2020-07-04 17:25:31 +02:00
Event.h LibGUI: Make some GUI event getters return const references 2020-09-13 21:41:45 +02:00
FileIconProvider.cpp iLibGUI+Base: Show inaccessible directories with special icon in views 2020-09-18 21:29:01 +02:00
FileIconProvider.h LibGUI: Move file icon lookup into a separate FileIconProvider 2020-08-12 20:41:13 +02:00
FilePicker.cpp LibGUI: Make the Cancel/Okay buttons in GUI::FilePicker a little taller 2020-10-25 15:36:09 +01:00
FilePicker.h LibGUI: Rename ModelClient::on_model_update() => model_did_update() 2020-08-13 20:18:11 +02:00
FileSystemModel.cpp LibGUI+WindowServer: Make DragOperation hold a MimeData instance 2020-11-08 21:46:13 +01:00
FileSystemModel.h LibGUI: Implement searching/jumping as you type in views 2020-10-22 15:23:45 +02:00
FilteringProxyModel.cpp LibGUI: Implement searching/jumping as you type in views 2020-10-22 15:23:45 +02:00
FilteringProxyModel.h LibGUI: Implement searching/jumping as you type in views 2020-10-22 15:23:45 +02:00
FocusSource.h LibGUI: Make focus events more aware of why focus is changing 2020-08-15 00:05:45 +02:00
Forward.h LibGUI: Move table view headers into their own widget 2020-08-26 00:51:35 +02:00
Frame.cpp LibGUI: Clip GUI::Frame children to the frame_inner_rect() 2020-08-26 00:51:35 +02:00
Frame.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
GroupBox.cpp LibGUI: Draw contiguous frame if GroupBox title is left empty 2020-07-14 17:55:39 +02:00
GroupBox.h LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
HeaderView.cpp LibGUI: Make table view row height+padding font-size-relative 2020-10-25 10:12:03 +01:00
HeaderView.h LibGUI: Make table view row height+padding font-size-relative 2020-10-25 10:12:03 +01:00
Icon.cpp Misc: Replace "String(string_view)" with "string_view.to_string()" 2020-05-06 19:28:59 +02:00
Icon.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
IconView.cpp LibGUI: Limit the height of item text in IconView 2020-11-10 09:54:18 +01:00
IconView.h LibGUI: Improve and simplify IconView item name wrapping 2020-10-27 16:10:30 +01:00
ImageWidget.cpp LibGUI: Fix build after renaming Image => ImageWidget 2020-07-23 17:43:44 +02:00
ImageWidget.h LibGUI: Rename GUI::Image => GUI::ImageWidget 2020-07-23 17:31:08 +02:00
INILexer.cpp LibGUI: INI file syntax highlighter 2020-05-01 16:58:18 +02:00
INILexer.h LibGUI: INI file syntax highlighter 2020-05-01 16:58:18 +02:00
INISyntaxHighlighter.cpp LibGUI: INI file syntax highlighter 2020-05-01 16:58:18 +02:00
INISyntaxHighlighter.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
InputBox.cpp LibGUI: Set parent icon, margins and disable resize for InputBox 2020-07-18 16:27:57 +02:00
InputBox.h LibGUI: Add InputBox::show with required parent window argument 2020-07-16 16:10:21 +02:00
ItemListModel.h DisplaySettings+LibGUI: Move ItemListModel into LibGUI 2020-08-29 17:42:03 +02:00
JsonArrayModel.cpp LibGUI: Remove unnecessary type cast in JsonArrayModel. 2020-09-20 21:10:46 +02:00
JsonArrayModel.h LibGUI: Remove unnecessary type cast in JsonArrayModel. 2020-09-20 21:10:46 +02:00
JSSyntaxHighlighter.cpp LibJS: Unify syntax highlighting 2020-10-04 23:41:31 +02:00
JSSyntaxHighlighter.h Spreadsheet: Add a syntax highlighter to the cell editor 2020-08-24 19:15:07 +02:00
Label.cpp LibGUI: Make GUI::Label respect the foreground color role 2020-10-23 11:57:00 +02:00
Label.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Layout.cpp AK: Make RefPtr, NonnullRefPtr, WeakPtr thread safe 2020-11-10 19:11:52 +01:00
Layout.h LibCore: Make Core::Object properties more dynamic 2020-09-15 21:46:26 +02:00
LazyWidget.cpp LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
LazyWidget.h LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
ListView.cpp LibGUI: Model-less views should not swallow key events 2020-10-28 21:26:27 +01:00
ListView.h HackStudio: Add basic Git integration 2020-09-15 21:43:29 +02:00
Margins.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Menu.cpp AK: Make RefPtr, NonnullRefPtr, WeakPtr thread safe 2020-11-10 19:11:52 +01:00
Menu.h LibGUI: Enable icons for SubMenus 2020-07-28 16:29:44 +02:00
MenuBar.cpp LibGUI: Make MenuBar a Core::Object 2020-04-21 16:19:18 +02:00
MenuBar.h LibGUI: Make MenuBar a Core::Object 2020-04-21 16:19:18 +02:00
MenuItem.cpp WindowServer/LibGUI: Add default menu items and allow default action for context menu 2020-07-11 11:45:49 +02:00
MenuItem.h WindowServer/LibGUI: Add default menu items and allow default action for context menu 2020-07-11 11:45:49 +02:00
MessageBox.cpp Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
MessageBox.h LibWeb: Require parent window argument for MessageBox 2020-07-16 16:10:21 +02:00
Model.cpp LibGUI+WindowServer: Make DragOperation hold a MimeData instance 2020-11-08 21:46:13 +01:00
Model.h LibGUI+WindowServer: Make DragOperation hold a MimeData instance 2020-11-08 21:46:13 +01:00
ModelEditingDelegate.h LibGUI: Allow rollback of model editing delegate input 2020-08-28 20:50:12 +02:00
ModelIndex.cpp LibGUI: Add formatter for ModelIndex. 2020-10-06 15:04:37 +02:00
ModelIndex.h LibGUI: Add formatter for ModelIndex. 2020-10-06 15:04:37 +02:00
ModelRole.h LibGUI+WindowServer: Make DragOperation hold a MimeData instance 2020-11-08 21:46:13 +01:00
ModelSelection.cpp LibGUI: Add ModelClient abstract class and allow registering clients 2020-07-13 19:49:34 +02:00
ModelSelection.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
MultiView.cpp LibGUI: Enable using a ColumnsView inside MultiView :^) 2020-08-16 16:44:09 +02:00
MultiView.h LibGUI: Enable using a ColumnsView inside MultiView :^) 2020-08-16 16:44:09 +02:00
Notification.cpp Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Notification.h Meta: Add missing copyright headers 2020-04-06 11:09:01 +02:00
Painter.cpp LibGfx: Add forward declaration header 2020-02-14 23:31:18 +01:00
Painter.h LibGUI: Add forwarding header 2020-02-16 09:41:56 +01:00
ProcessChooser.cpp LibGUI: Set ProcessChooser key column and sort order after set_model (#3521) 2020-09-17 16:17:14 +02:00
ProcessChooser.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
ProgressBar.cpp LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
ProgressBar.h LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
RadioButton.cpp LibGUI+LibGfx: Improve focus rect appearance 2020-10-26 21:01:45 +01:00
RadioButton.h LibCore+LibGUI: Switch to using AK::is and AK::downcast 2020-07-26 17:51:00 +02:00
ResizeCorner.cpp Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
ResizeCorner.h LibGUI: Use widget override cursors in GUI::ResizeCorner 2020-09-11 14:47:38 +02:00
RunningProcessesModel.cpp LibGUI: Move GUI::Model::Role to GUI::ModelRole 2020-08-16 16:44:09 +02:00
RunningProcessesModel.h LibGUI: Move GUI::Model::Role to GUI::ModelRole 2020-08-16 16:44:09 +02:00
ScrollableWidget.cpp LibGUI: Limit ScrollableWidget::available_size() width/height to 0 2020-11-08 17:21:11 +01:00
ScrollableWidget.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
ScrollBar.cpp Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
ScrollBar.h LibGUI: Make ScrollBar track the currently pressed component 2020-08-25 20:20:45 +02:00
ShellSyntaxHighlighter.cpp LibGUI: Update ShellSyntaxHighlighter to also highlight brace expansions 2020-10-25 10:09:27 +01:00
ShellSyntaxHighlighter.h LibGUI: Add a Shell syntax highlighter 2020-09-30 20:05:24 +02:00
Shortcut.cpp LibGUI: Use StringBuilder::join() in Shortcut::to_string() 2020-08-19 21:17:02 +02:00
Shortcut.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Slider.cpp LibGUI: Increase slider acceleration with Ctrl (#3499) 2020-09-19 16:45:51 +02:00
Slider.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
SortingProxyModel.cpp LibGUI: Implement searching/jumping as you type in views 2020-10-22 15:23:45 +02:00
SortingProxyModel.h LibGUI: Implement searching/jumping as you type in views 2020-10-22 15:23:45 +02:00
SpinBox.cpp LibGUI: Add Widget focus policies 2020-10-30 17:03:28 +01:00
SpinBox.h LibGUI: Use on_up_pressed/on_down_pressed events in SpinBox 2020-09-23 20:44:23 +02:00
Splitter.cpp AK: Make RefPtr, NonnullRefPtr, WeakPtr thread safe 2020-11-10 19:11:52 +01:00
Splitter.h LibGUI: Splitter should only override cursor if within grabbable area 2020-08-27 10:42:15 +02:00
StackWidget.cpp LibGUI: Add Widget::has_focus_within() 2020-10-30 23:40:23 +01:00
StackWidget.h LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
StatusBar.cpp LibGUI: Hide ResizeCorner in StatusBar when window is maximized 2020-08-31 09:08:26 +02:00
StatusBar.h LibGUI: Hide ResizeCorner in StatusBar when window is maximized 2020-08-31 09:08:26 +02:00
SyntaxHighlighter.cpp AK: Make RefPtr, NonnullRefPtr, WeakPtr thread safe 2020-11-10 19:11:52 +01:00
SyntaxHighlighter.h LibGUI: Add a Shell syntax highlighter 2020-09-30 20:05:24 +02:00
TableView.cpp LibGUI: Remove redundant scroll_into_view() calls in TableView 2020-10-30 23:52:59 +01:00
TableView.h LibGUI: Paint a focus rect around the cursor index in TableView 2020-10-27 16:18:55 +01:00
TabWidget.cpp LibGUI: Add Widget::has_focus_within() 2020-10-30 23:40:23 +01:00
TabWidget.h LibGUI: Make TabWidget unfocusable when tab-less 2020-10-30 17:03:29 +01:00
TextBox.cpp Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
TextBox.h LibGUI: Add up & down arrow hooks and input history to TextBox 2020-05-27 20:04:52 +02:00
TextDocument.cpp LibGUI: Add TextDocument::span_at(TextPosition) 2020-10-29 23:52:07 +01:00
TextDocument.h LibGUI: Add TextDocument::span_at(TextPosition) 2020-10-29 23:52:07 +01:00
TextEditor.cpp TextEditor: Go-to-line now shows line in middle of view (#4008) 2020-11-10 09:53:50 +01:00
TextEditor.h TextEditor: Go-to-line now shows line in middle of view (#4008) 2020-11-10 09:53:50 +01:00
TextPosition.h LibGUI: Add formatters for TextPosition and TextRange. 2020-10-06 20:29:26 +02:00
TextRange.h LibGUI: Add formatters for TextPosition and TextRange. 2020-10-06 20:29:26 +02:00
ToolBar.cpp LibGUI: Use ToolBarButton helper class inside ToolBar 2020-10-30 17:03:29 +01:00
ToolBar.h LibGUI: Remove parent parameter to GUI::Widget constructor 2020-02-23 12:27:53 +01:00
ToolBarContainer.cpp LibGUI: Don't paint borders for invisible bars in ToolBarContainer 2020-10-03 19:43:25 +02:00
ToolBarContainer.h LibGUI: Don't accomodate invisible children in ToolBarContainer height 2020-10-03 14:01:37 +02:00
TreeView.cpp LibGUI: Model-less views should not swallow key events 2020-10-28 21:26:27 +01:00
TreeView.h LibGUI: Shrink the default selection rect of TreeView items 2020-10-27 20:33:30 +01:00
UndoStack.cpp AK: Make Vector use size_t for its size and capacity 2020-02-25 14:52:35 +01:00
UndoStack.h AK: Make Vector use size_t for its size and capacity 2020-02-25 14:52:35 +01:00
Variant.cpp LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSize 2020-06-10 10:59:04 +02:00
Variant.h Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Widget.cpp AK: Make RefPtr, NonnullRefPtr, WeakPtr thread safe 2020-11-10 19:11:52 +01:00
Widget.h LibGUI: Add Widget::has_focus_within() 2020-10-30 23:40:23 +01:00
Window.cpp AK: Make RefPtr, NonnullRefPtr, WeakPtr thread safe 2020-11-10 19:11:52 +01:00
Window.h LibGUI: Improve automatic focus guessing somewhat 2020-10-30 17:03:29 +01:00
WindowServerConnection.cpp LibGUI+WindowServer: Make DragOperation hold a MimeData instance 2020-11-08 21:46:13 +01:00
WindowServerConnection.h WindowServer: Add accessory windows 2020-07-15 17:15:45 +02:00
WindowType.h WindowServer: Add WindowType::Desktop 2020-04-18 21:10:16 +02:00