summaryrefslogtreecommitdiff
path: root/Servers/WindowServer
AgeCommit message (Collapse)Author
2020-05-08Services: Renamed from ServersAndreas Kling
It didn't feel right to have a "DHCPClient" in a "Servers" directory. Rename this to Services to better reflect the type of programs we'll be putting in there.
2020-05-07WindowServer: Fix 'Maximize' ButtonBen Wiederhake
When a window is maximized by clicking the 'maximize' button in the window frame, the WindowFrame *is* invalidated and repainted properly. However, the internal state of the WindowServer::Button does not get updated until the next mouse movement. This means that the 'maximize' button is erroneously highlighted until the mouse moves again. This is very visible. Ideally, a patch should compute the actual new m_hovered. However, this requires knowledge of the new rect, or calling something on the Button after the new rect has been determined. Until someone can figure out a good way around this, setting m_hovered to false is a solution that 'usually' works. Note that this does *not* work when after maximizing/restoring, the maximize button falls exactly under the mouse again. The button functions properly, but is erroneously not highlighted. At least a *missing* highlight is less noticable than a highlight too many.
2020-05-07WindowServer: Don't block child-windows of modal windowsBen Wiederhake
ComboBox creates a regular (non-modal) window; I believe this is fine. A Dialog (modal window) can contain a ComboBox; I believe this is fine. A non-modal child window of a modal window (e.g. a ComboBox pop-out within a Dialog) wasn't clickable, and was blocked in the WindowManager. I want to change this behavior. This edge case occurs when trying to select a month in the "Calendar" Application.
2020-05-03WindowServer: Remove debug spam when creating new windowsAndreas Kling
2020-05-03WindowServer: Update desktop window rect on resolution changeLinus Groh
Fixes #2073.
2020-05-03WindowServer: Reset double-click timers for back/forward buttonsAndreas Kling
Thanks for movAX13H for pointing this out!
2020-05-02WindowServer+LibGUI: Support the 4th and 5th mouse buttonsAndreas Kling
We'll call the "Back" and "Forward" since that's what they are normally mapped to in some other systems.
2020-05-02WindowServer+LibGUI+Taskbar: Don't include frameless windows in listsAndreas Kling
Frameless windows don't need to show up in the taskbar or the switcher.
2020-05-02WindowServer+LibGUI: Automatically close child windows with parentAndreas Kling
If a window has child windows when it's destroyed, WindowServer will now automatically tear down all of its children as well. This is communicated to the client program through a vector of window ID's included with the response to WindowServer::DestroyWindow. This does feel a little bit awkward, but managing it on the client side also seems a bit awkward.
2020-05-02WindowServer+LibGUI: Add "frameless" window flagAndreas Kling
This allows you to create windows with no title bar or window frame.
2020-05-02WindowServer+LibGUI: Remove unused Window::show_titlebar() flagAndreas Kling
Nobody was using this flag, so let's stop maintaining it. It's easy to add it back if we ever want the behavior.
2020-05-02WindowServer: Don't allow parent windows to go above their childrenAndreas Kling
Whenever a parent window is moved to front, we now follow up by immediately moving its children to front as well.
2020-05-02WindowServer: Move child windows together with their parentsAndreas Kling
When moving a window, we will now move any child windows by the same position delta as the parent. This makes ComboBox popup list windows follow the window they were opened by, which looks nice. :^)
2020-05-02LibGUI+WindowServer: Inform WindowServer about parent/child windowsAndreas Kling
If a window has another window in its Core::Object ancestor chain, we now communicate that relationship to WindowServer so that it can act with awareness of parent/child windows.
2020-04-30WindowServer: Fix some pixels in menus after window border changesAndreas Kling
2020-04-30WindowServer: Tweak window icon menu popup locationAndreas Kling
2020-04-30WindowServer: Add action icons to the window menusAndreas Kling
2020-04-30WindowServer: Fix typo (backgound_color => background_color)Andreas Kling
2020-04-29WindowServer: Pop up the window menu at bottom left of window iconAndreas Kling
When clicking the window icon, we now pop up the window menu at the bottom left of the icon, no matter where you clicked it. Right-clicking the title bar still pops up at the event position.
2020-04-29WindowServer: Fix build after FBResolution changesAndreas Kling
2020-04-28WindowServer: Change the desktop background colour on theme changeAndres Vieira
2020-04-28WindowManager: Allow compositor to have an empty bitmap as a wallpaperAndres Vieira
This will make the compositor draw our colour wallpaper, instead
2020-04-24WindowServer: Don't allow activating disabled menu items with keyboardAndreas Kling
2020-04-24WindowServer: Fix name typo in descend_into_submenu_at_hovered_item()Andreas Kling
2020-04-24WindowServer: Skip over disabled menu items during keyboard navigationAndreas Kling
2020-04-23WindowServer: Don't allow resize-grabbing window underneath title barAndreas Kling
2020-04-23WindowServer: Make vertical segment under title bar 1px thickerAndreas Kling
2020-04-23WindowServer: Tweak window frame heightAndreas Kling
2020-04-23WindowServer+LibGfx: Make window borders 1px thickerAndreas Kling
2020-04-22WindowServer+LibGUI: Notify DisplayLinks at 60 fps no matter whatAndreas Kling
The original implementation only sent out notifications when there was something being drawn on screen. If nothing was going on, we'd get too lazy and just not notify display links. This obviously break requestAnimationFrame(), so now we just drive the DisplayLinks at 60 fps no matter what. :^)
2020-04-21WindowServer+SystemMenu: Check the current system theme on startupAndreas Kling
2020-04-21WindowServer: Allow the system menu to be open when a modal is shownangel
2020-04-21WindowServer: Don't process menu bar events when modal is openangel
This prevents accesing the parent window menubar when a modal is currently open, which was not a desired behavior.
2020-04-21WindowServer: Don't ignore modal events when showing menusangel
PR #1495 fixes #1464 but only accounts for window menus. In File Manager, for example, attempting to pop up the context menu on the file name text box of the properties modal window, will result in the same behavior. Removing the code altogether solves the problem, altough I'm not sure if it could have any bad implications. I was thinking it might allow interaction with a parent window menu if it remains open just before the popup window is shown, but I have not seen a way to replicate this behavior.
2020-04-21WindowServer: Unset active input window on active window change (#1901)angel
This was not done previously and resulted in modal windows not being able to accept input unless they were clicked one time if their parent windows were the active input window.
2020-04-19WindowServer: Fix AppletManager buildAndreas Kling
2020-04-19WindowServer: Don't crash when encountering unsorted menu appletsAndreas Kling
Fixes #1862.
2020-04-19WindowServer: Remove debug spam in set_active_window()Andreas Kling
2020-04-19WindowServer: Don't automatically focus desktop window when addedAndreas Kling
Normally we focus any window that's added to the window stack. However, for WindowType::Desktop this gets annoying since if the desktop manager comes up after other GUI processes have already started, it steals the focus from them. Solve this by only auto-focusing desktop windows if they are the very first window added.
2020-04-19WindowServer/LibGUI: Enforce minimum window sizeLinus Groh
2020-04-18WindowServer: Allow WindowType::Desktop windows to become activeAndreas Kling
This allows us to focus the desktop and interact with it normally. :^)
2020-04-18WindowServer: Give the desktop window the whole exact desktop rectAndreas Kling
2020-04-18WindowServer: Add WindowType::DesktopAndreas Kling
This new window type can be used to implement a desktop file manager for example. :^)
2020-04-09WindowServer: MenuManager::handle_mouse_event() return if window is nullBrendan Coles
Previously the WindowServer would assert `topmost_menu->menu_window()` and crash. Fixes #1716
2020-04-07WindowServer: Remove long-unused COMPOSITOR_DEBUG loggingAndreas Kling
2020-04-07LibCore: Add Core::Timer::create_single_shot()Andreas Kling
This is just a convenience function for creating single-shot timers.
2020-04-07WindowServer: Menu::popup() should return when the menu is emptyBrendan Coles
Previously the WindowServer would assert `!is_empty()` and crash. Fixes #1689
2020-03-31WindowServer: Remove applets from AppletManager on client disconnectionAndreas Kling
Disconnecting from WindowServer without explicit calls to DestroyWindow would leave nulled-out WeakPtr's in the AppletManager applet list. This led to a null dereference when adding a new applet, since we were assuming the list contained no nulled-out applets. This patch fixes the issue by always unregistering applet windows from the AppletManager in ~ClientConnection(). We also do an extra pass of pruning any nulled-out WeakPtrs from the applet list when adding to it. Fixes #1551.
2020-03-30WindowServer+NotificationServer: Vertical title bar for notificationsAndreas Kling
This patch adds a specialized window type for notifications. They now have a title bar on the right-hand side, with a close button. This removes the need for the "Done" button in notifications, giving us a bit more horizontal space overall. Design based on a mock-up from @xTibor :^)
2020-03-29WindowServer: Use Gfx::ShareableBitmap for SetWindowIconBitmapAndreas Kling