summaryrefslogtreecommitdiff
path: root/Servers
AgeCommit message (Collapse)Author
2019-09-30ByteBuffer: Remove pointer() in favor of data()Andreas Kling
We had two ways to get the data inside a ByteBuffer. That was silly.
2019-09-28TelnetServer: Accept arbitrary command with -cLarkin Nickle
For example, this allows you to do something like `TelnetServer -c /usr/bin/nyancat` to have the TelnetServer run `/usr/bin/nyancat` instead of `/bin/Shell`.
2019-09-22WindowServer: Remove debug spam about child window removalsAndreas Kling
2019-09-22LibCore: Remove ObjectPtr in favor of RefPtrAndreas Kling
Now that CObject is fully ref-counted, just use RefPtr everywhere! :^)
2019-09-22LibCore: Make CObject reference-countedAndreas Kling
Okay, I've spent a whole day on this now, and it finally kinda works! With this patch, CObject and all of its derived classes are reference counted instead of tree-owned. The previous, Qt-like model was nice and familiar, but ultimately also outdated and difficult to reason about. CObject-derived types should now be stored in RefPtr/NonnullRefPtr and each class can be constructed using the forwarding construct() helper: auto widget = GWidget::construct(parent_widget); Note that construct() simply forwards all arguments to an existing constructor. It is inserted into each class by the C_OBJECT macro, see CObject.h to understand how that works. CObject::delete_later() disappears in this patch, as there is no longer a single logical owner of a CObject.
2019-09-21LibCore: Convert CFile to ObjectPtrAndreas Kling
2019-09-21LibCore: Remove CTimer::create() overloads in favor of construct()Andreas Kling
2019-09-21LibCore: Convert CTCPServer to ObjectPtrAndreas Kling
Also get rid of the custom CNotifier::create() in favor of construct().
2019-09-21LibCore: Convert CLocalServer to ObjectPtrAndreas Kling
2019-09-21LibCore: Convert CLocalSocket to ObjectPtrAndreas Kling
2019-09-21LibCore: Convert CTCPSocket to ObjectPtr, add construct() helperAndreas Kling
The C_OBJECT macro now also inserts a static construct(...) helper into the class. Now we can make the constructor(s) private and instead call: auto socket = CTCPSocket::construct(arguments); construct() returns an ObjectPtr<T>, which we'll later switch to being a NonnullRefPtr<T>, once everything else in in place for ref-counting.
2019-09-20LibCore+LibGUI+WindowServer: Make events bubble up through ancestorsAndreas Kling
With this patch, CEvents no longer stop at the target object, but will bubble up the ancestor chain as long as CEvent::is_accepted() is false. To the set accepted flag, call CEvent::accept(). To clear the accepted flag, call CEvent::ignore(). Events start out in the accepted state, so if you want them to bubble up, you have to call ignore() on them. Using this mechanism, we now ignore non-tabbing keydown events in GWidget, causing them to bubble up through the widget's ancestors. :^)
2019-09-20LibCore: Convert CNotifier to ObjectPtrAndreas Kling
2019-09-20LibCore: Convert CTimer to ObjectPtrAndreas Kling
2019-09-18SystemServer: Don't wake up every single secondAndreas Kling
2019-09-18WindowServer: Remove the default background wallpaperAndreas Kling
Booting without a wallpaper is significantly faster in QEMU when the host machine is under load (e.g while recording the screen..) Using a wallpaper is now optional. :^)
2019-09-18SystemServer: Let's only spawn one TTYServer by defaultAndreas Kling
We're rarely/never accessing these anyway, and this tidies up the process table a little bit. A futile pursuit, perhaps..
2019-09-16WindowServer+LibGUI: Allow switching windows in/out of fullscreen modeAndreas Kling
You can now call GWindow::set_fullscreen(bool) and it will go in or out of fullscreen mode. WindowServer will also remember the previous window rect when switching to fullscreen, and restore it when switching back. :^)
2019-09-15SystemServer: Drop GID before dropping UIDAndreas Kling
Otherwise the setgid() will fail :^)
2019-09-14WindowServer+LibGUI: Store a "data type" with the clipboard contentAndreas Kling
This will allow us to distinguish between different types of data stored on the clipboard.
2019-09-09WindowServer: Avoid doing sqrt() in double-click detectionAndreas Kling
Compare the distance travelled squared against the max distance squared to avoid using sqrt(). Thanks to Nagy Tibor for the suggestion :^)
2019-09-08TelnetServer: Implement basic telnet serverConrad Pankoff
Fixes #407 Depends on #530 to run reliably.
2019-09-08WindowServer: Don't transform quick far-apart clicks into double-clicksAndreas Kling
We now require that the two clicks that make up a double-click be no more than 4px apart. This fixes the annoying behavior where you'd often get incorrect double-click events on GUI widgets.
2019-09-07Applications: Create a display properties managerJesse Buhagiar
An interactive application to modify the current display settings, such as the current wallpaper as well as the screen resolution. Currently we're adding the resolutions ourselves, because there's currently no way to detect was resolutions the current display adapter supports (or at least I can't see one... Maybe VBE does and I'm stupid). It even comes with a very nice template'd `ItemList` that can support a vector of any type, which makes life much simpler.
2019-09-06WindowServer: Elide window titles that don't fitAndreas Kling
Also skip painting the titlebar stripes and/or title entirely if we don't have enough space for them. Fixes #524.
2019-09-06AK: Rename <AK/AKString.h> to <AK/String.h>Andreas Kling
This was a workaround to be able to build on case-insensitive file systems where it might get confused about <string.h> vs <String.h>. Let's just not support building that way, so String.h can have an objectively nicer name. :^)
2019-09-05WindowServer+LibGUI+FontEditor: Encode special characters as UTF-8Sergey Bugaev
2019-09-03SystemServer: Use dbg() instead of dbgprintf()Conrad Pankoff
2019-09-03SystemServer: Allow more arguments for startup processesConrad Pankoff
2019-09-01WindowServer: Don't crash when trying to close an empty menuAndreas Kling
It's not normal to add empty menus to an app's menubar, but just in case someone does it anyway, let's not crash trying to close it.
2019-08-29WindowServer+LibGUI: Add support for nested menusAndreas Kling
It's now possible to add a GMenu as a submenu of another GMenu. Simply use the GMenu::add_submenu(NonnullOwnPtr<GMenu>) API :^) The WindowServer now keeps track of a stack of open menus rather than just one "current menu". This code needs a bit more work, but the basic functionality is now here!
2019-08-27WindowServer: Fix off-by-one in menu height calculationAndreas Kling
This removes the unecessary empty scanline at the bottom of menus and makes it look nice and tidy when the bottom item is highlighted. :^)
2019-08-27WindowServer: Reverse the menu background colorsAndreas Kling
Let's try putting the warm gray under the icons/checkboxes. This makes the checkboxes look more natural.
2019-08-27WindowServer: Don't highlight disabled menu items when hoveredAndreas Kling
2019-08-27WindowServer: Improve look of disabled menu items somewhatAndreas Kling
2019-08-27WindowServer: Add an icon for the system menu / About actionAndreas Kling
It's a little ladybug. Maybe someday we'll have a fancy icon, but until then, this ladybug character is a cute placeholder. :^)
2019-08-26WindowServer: Add some app icons to the system menuAndreas Kling
2019-08-26WindowServer: Make the global menubar selection consistent with itemsAndreas Kling
2019-08-26WindowServer: Align menu separators correctlyAndreas Kling
These were off by one vertically, oops!
2019-08-26WindowServer: Improve the menu look a bitAndreas Kling
Take some inspiration from the first release of Visual Studio .NET and add a left-hand stripe to contain the icons. And various other tweaks. This isn't quite perfect, but it's pretty neat! :^)
2019-08-26WindowServer+LibGUI: Show action icons in the menus when possibleAndreas Kling
Any GAction that has an icon assigned will now show up with that icon when added to a menu as well. I made the menu items 2px taller to accomodate the icons. I think this turned out quite nice as well :^)
2019-08-26WindowServer: Improved look of checkable menu itemsAndreas Kling
Paint a little checkbox frame for checkable items to make it obvious that they are indeed checkable. This looks quite nice :^) We also now shift all menu items to the right if we have any checkable items in the menu.
2019-08-26LibThread: Move CLock to LibThread::LockSergey Bugaev
And adapt all the code that uses it.
2019-08-26WindowServer: Port threading to LibThreadSergey Bugaev
2019-08-26AudioServer: Port threading to LibThreadSergey Bugaev
2019-08-19WindowServer: Oops, remove an assertion that won't fly with MBVGAAndreas Kling
2019-08-19GraphicsBitmap: create_wrapper() should take pitch as a parameterAndreas Kling
We shouldn't assume that the pitch of some arbitrary bitmap memory that we're wrapping is going to be 16-byte aligned. Instead, just take the pitch as a parameter. Also update WindowServer to pass the pitch to the framebuffer bitmaps.
2019-08-19WindowServer: Fix an assertionSergey Bugaev
Now that the window used by a WSMenu is its child CObject, the menu also receives CChildEvent's about the window, including CEvent::ChildAdded when the window gets created. At this point, menu_window() still returns nullptr, so stop unconditionally assuming that it doesn't. We should not care whether or not we have a window for unrelated events anyway.
2019-08-18AudioServer: Turn ASMixer into a CObjectAndreas Kling
It was wrongly inheriting from RefCounted<AudioServer> without using reference counting. Let's just make it a CObject instead.
2019-08-18WindowServer: Make WSMenu's be children of the WSClientConnectionAndreas Kling