1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 16:57:46 +00:00

WindowServer+LibGUI: Shrink window edge resize hot-spots

The hot-spots for resizing a window by dragging its corner are now
limited to a small area around the actual corner instead of an area with
1/3rd the length or width of the window.

The hot-spots to resize a window while holding a modifier key and the
right mouse button are unchanged.
This commit is contained in:
Mart G 2022-10-11 17:03:11 +02:00 committed by Andreas Kling
parent eb9db167da
commit 8202beeb2b
15 changed files with 107 additions and 62 deletions

View file

@ -76,7 +76,7 @@ void ResizeCorner::paint_event(PaintEvent& event)
void ResizeCorner::mousedown_event(MouseEvent& event)
{
if (event.button() == MouseButton::Primary)
window()->start_interactive_resize();
window()->start_interactive_resize(ResizeDirection::DownRight);
Widget::mousedown_event(event);
}

View file

@ -0,0 +1,15 @@
/*
* Copyright (c) 2022, Mart G <martg_@hotmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <Services/WindowServer/ResizeDirection.h>
namespace GUI {
using ResizeDirection = WindowServer::ResizeDirection;
}

View file

@ -938,9 +938,9 @@ void Window::apply_icon()
ConnectionToWindowServer::the().async_set_window_icon_bitmap(m_window_id, m_icon->to_shareable_bitmap());
}
void Window::start_interactive_resize()
void Window::start_interactive_resize(ResizeDirection resize_direction)
{
ConnectionToWindowServer::the().async_start_window_resize(m_window_id);
ConnectionToWindowServer::the().async_start_window_resize(m_window_id, (i32)resize_direction);
}
Vector<Widget&> Window::focusable_widgets(FocusSource source) const

View file

@ -14,6 +14,7 @@
#include <LibCore/Object.h>
#include <LibGUI/FocusSource.h>
#include <LibGUI/Forward.h>
#include <LibGUI/ResizeDirection.h>
#include <LibGUI/WindowMode.h>
#include <LibGUI/WindowType.h>
#include <LibGfx/Forward.h>
@ -131,7 +132,7 @@ public:
virtual void close();
void move_to_front();
void start_interactive_resize();
void start_interactive_resize(ResizeDirection resize_direction);
Widget* main_widget() { return m_main_widget; }
Widget const* main_widget() const { return m_main_widget; }