summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-01-01LibWeb: Remove more hand-rolled type information :^)Andreas Kling
Hoo boy, we've really accumulated a lot of this stuff.
2021-01-01LibJS+LibWeb: Stop generating is_foo_wrapper() for JS DOM wrappersAndreas Kling
2021-01-01LibJS: Remove hand-rolled Object is_foo() helpers in favor of RTTIAndreas Kling
2021-01-01LibJS: Use RTTI for inheritance checksAndreas Kling
This replaces the hand-rolled string-based inheritance check tech.
2021-01-01LibWeb: Demangle the names returned by Layout::Node::class_name()Andreas Kling
Note that these are only used in debugging/test output so it's not performance sensitive.
2021-01-01LibWeb: Simplify Layout::Node::class_name() with RTTIAndreas Kling
2021-01-01LibCore: Remove Core::Object::is_widget() in favor of RTTIAndreas Kling
2021-01-01LibCore: Remove some hand-rolled type information from Core::ObjectAndreas Kling
Both is_action() and is_window() can be answered by RTTI.
2021-01-01LibGUI: Remove some hand-rolled type information from WidgetAndreas Kling
2021-01-01PixelPaint: Remove hand-rolled type information in favor of RTTIAndreas Kling
2021-01-01DisplaySettings: Remove `root_widget()` from DisplaySettingsJesse Buhagiar
This fixes a weird dependency graph in DisplaySettings. The widget itself (which is described in `gml` now), no longer contains `root_widget()`. The widget itself has been moved into a tabbed pane, to get it ready to add some more features and bring it more up to date with the current UI code.
2021-01-01AK+LibGUI+LibWeb: Remove AK::TypeTraits in favor of RTTI-based helpersAndreas Kling
Now that we have RTTI in userspace, we can do away with all this manual hackery and use dynamic_cast. We keep the is<T> and downcast<T> helpers since they still provide good readability improvements. Note that unlike dynamic_cast<T>, downcast<T> does not fail in a recoverable way, but will assert if the object being casted is not a T.
2021-01-01Kernel: Remove the limited use of AK::TypeTraits we had in the kernelAndreas Kling
This was only used for VMObject and we can do without it there. This is preparation for migrating to dynamic_cast-based helpers in userspace.
2021-01-01LibJS: Fix email in TypedArray{Constructor,Prototype} copyright headersLinus Groh
2021-01-01Applications+LibGUI: Convert all GML consumers to use the LibCore finderAndrew Kaster
Remove Widget::find_child_by_name and Widget::find_descendant_by_name, and convert all users to using the type-safer version in Core::Object.
2021-01-01LibCore: Add typed find_child and find_descendant helpers to ObjectAndrew Kaster
These look a lot like the parallel functionality in GUI::Widget :). These use dynamic_cast now, to make use of that RTTI we just added.
2021-01-01Meta: Enable RTTI for Userspace programsAndrew Kaster
RTTI is still disabled for the Kernel, and for the Dynamic Loader. This allows for much less awkward navigation of class heirarchies in LibCore, LibGUI, LibWeb, and LibJS (eventually). Measured RootFS size increase was < 1%, and libgui.so binary size was ~3.3%. The small binary size increase here seems worth it :^)
2021-01-01CMake: Add public cmake option to document BUILD_LAGOMBrian Gianforcaro
- Making this an option makes this option visible to users and tooling.
2021-01-01CMake: Add public cmake option to document ENABLE_ALL_THE_DEBUG_MACROSBrian Gianforcaro
- Making this an option makes this option visible to users and tooling. - Rename `ALL_THE_DEBUG_MACROS` -> `ENABLE_ALL_THE_DEBUG_MACROS`.
2021-01-01CMake: Remove some trailing whitespace from a few CMakeLists.txt filesBrian Gianforcaro
2021-01-01CMake: Consolidate all options to the root of the projectBrian Gianforcaro
2021-01-01LibELF: validate_program_headers: Validate p_memsz and p_alignBrendan Coles
2021-01-01ProtocolServer: Use an empty Optional<IPC::File> to pass along "no fd"AnotherTest
Passing `-1` wouldn't work, as these are passed to `sendfd()'. Fixes #4706.
2021-01-01Base: Add Coffee themeBrendan Coles
2021-01-01Terminal: Tweak "Find" menu item -> "Find..."Andreas Kling
The ellipsis (...) in a menu item traditionally means that the action will require more input before executing. In this case, you need to provide a search string. :^)
2021-01-01LibGUI: Hide unnecessary scrollbars in MultiViewAndreas Kling
This removes pointless scrollbars in FilePicker which looks nice.
2021-01-01LibGUI: Simplify setup code in GUI::MultiViewAndreas Kling
Use for_each_view_implementation() to avoid duplicating the setup code for each subview.
2021-01-01FileManager: Hide unnecessary scrollbars in DirectoryViewAndreas Kling
2021-01-01DynamicLoader: Tell the linker to not add a PT_INTERP headerAndrew Kaster
Use the GNU LD option --no-dynamic-linker. This allows uncommenting some code in the Kernel that gets upset if your ELF interpreter has its own interpreter.
2021-01-01FileManager: Defer setting FileSystemModel root path in DirectoryViewAndreas Kling
Otherwise we always load the root directory on startup before switching to whatever directory we actually wanted to open.
2021-01-01Base: Add a desktop shortcut to the root directoryAndreas Kling
2021-01-01Base: Add 32x32 variant of the hard-disk iconAndreas Kling
2021-01-01Meta: Update project copyright dates (2018-2021) :^)Andreas Kling
2021-01-01WindowServer: Flash modal window when clicking on window blocked by itAndreas Kling
This makes window modality a bit more discoverable by indicating to the user that the modal window must be closed before mouse interaction is possible in the clicked window.
2021-01-01LibGUI: Transfer focus when checking exclusive button programmaticallyAndreas Kling
When calling set_checked(true) on an exclusive button, we will now transfer focus to the newly checked button if one of its now-unchecked siblings had focus before. This makes windows that place initial focus somewhere in a group of radio buttons look nicer when they show up, since focus will be on whichever radio button was pre-checked, which may not be the first one in the group.
2021-01-01LibGUI: Simplify RadioButton by using AbstractButton exclusive modeAndreas Kling
Making an AbstractButton exclusive means that we enforce that only one of the exclusive buttons within the same parent widget can be checked at a time. RadioButton was doing exactly the same thing, except in a custom way. So just remove the custom code and make it exclusive. :^)
2021-01-01Terminal: Make the settings window modalAndreas Kling
2020-12-31LibGfx: Introduce provisional font interfaceStephan Unverwerth
Old font functionality has been moved into BitmapFont and an abstract Font interface has been introduced to faciliate further development of TTF font integration.
2020-12-31Terminal: Move the settings window to GML :^)Andreas Kling
2020-12-31LibGUI: Add a bunch of missing widget registrationsAndreas Kling
2020-12-31Meta: Use a raw string delimiter in text-to-cpp-string.shAndreas Kling
Otherwise we can't have the sequence ')"' in GML :^)
2020-12-31LibWeb: Clear circular download reference when download finishedTom
2020-12-31Piano: Quit the audio thread by checking Core::EventLoop for exitAndrew Kaster
The infinite loop here doesn't really work at all for an application process that expects to be able to exit. Check against Core::EventLoop::current() to see if it's time to exit, and return 0 from the thread function if so. The thread will be joined in its destructor, which doesn't assert anymore now that Thread is a jthread.
2020-12-31LibAudio: Make it so that an unused WavWriter is destructibleAndrew Kaster
WavWriter::finalize didn't check that m_file was actually valid before trying to seek and close it. The file is only set by set_file, so it's not an invariant. Just add a null guard to finalize().
2020-12-31LibThread: Give Thread std::jthread semanticsAndrew Kaster
Because pthread_create will always call pthread_exit internally before exiting the thread function, we can remove the odd requirement that the user's thread function must call Thread::quit internally. Make Thread::join clear m_tid on success, and print to stderr on failure. Call join from ~Thread(). Now if you write an infinite loop in your thread in an application and don't have an exit condition, you will block in the thread's destructor forever. Time for stop_token? :)
2020-12-31LibThread: Hide Thread's constructor, as it is a Core::ObjectAndrew Kaster
Just constructing one of these guys on the stack willy nilly will leak the first reference to them. There might be other C_OBJECTs that have public constructors, seems like a good place for some static analysis checks :). Force users to call the construct() method for it.
2020-12-31Ports: Hard-code SERENITY_ARCH=i686 until other architectures work (#4688)Dan MacDonald
2020-12-31Meta+Docs+CI: Require clang-format >= 11Linus Groh
2020-12-31Everywhere: Re-format with clang-format-11Linus Groh
Compared to version 10 this fixes a bunch of formatting issues, mostly around structs/classes with attributes like [[gnu::packed]], and incorrect insertion of spaces in parameter types ("T &"/"T &&"). I also removed a bunch of // clang-format off/on and FIXME comments that are no longer relevant - on the other hand it tried to destroy a couple of neatly formatted comments, so I had to add some as well.
2020-12-31ProtocolServer: Avoid blocking all downloads when client stops readingAnotherTest
Fixes #4668.