1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:38:11 +00:00

LibGfx: Move StandardCursor enum to LibGfx

This enum existed both in LibGUI and WindowServer which was silly and
error-prone.
This commit is contained in:
Andreas Kling 2020-09-10 19:25:13 +02:00
parent c063a02979
commit 0f9be82826
23 changed files with 127 additions and 111 deletions

View file

@ -274,12 +274,12 @@ void HexEditor::mousemove_event(GUI::MouseEvent& event)
auto text_end_x = text_start_x + (bytes_per_row() * character_width());
auto text_end_y = text_start_y + 5 + (total_rows() * line_height());
window()->set_override_cursor(GUI::StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
if ((absolute_x >= hex_start_x && absolute_x <= hex_end_x
&& absolute_y >= hex_start_y && absolute_y <= hex_end_y)
|| (absolute_x >= text_start_x && absolute_x <= text_end_x
&& absolute_y >= text_start_y && absolute_y <= text_end_y)) {
window()->set_override_cursor(GUI::StandardCursor::IBeam);
window()->set_override_cursor(Gfx::StandardCursor::IBeam);
}
if (m_in_drag_select) {
@ -585,5 +585,5 @@ void HexEditor::paint_event(GUI::PaintEvent& event)
void HexEditor::leave_event(Core::Event&)
{
ASSERT(window());
window()->set_override_cursor(GUI::StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
}

View file

@ -81,16 +81,16 @@ void KeyButton::mousemove_event(GUI::MouseEvent& event)
Gfx::IntRect c = { rect().x() + 7, rect().y() + 4, rect().width() - 14, rect().height() - 14 };
if (c.contains(event.position())) {
window()->set_override_cursor(GUI::StandardCursor::Hand);
window()->set_override_cursor(Gfx::StandardCursor::Hand);
return;
}
window()->set_override_cursor(GUI::StandardCursor::Arrow);
window()->set_override_cursor(Gfx::StandardCursor::Arrow);
AbstractButton::mousemove_event(event);
}
void KeyButton::leave_event(Core::Event& event)
{
window()->set_override_cursor(GUI::StandardCursor::Arrow);
window()->set_override_cursor(Gfx::StandardCursor::Arrow);
AbstractButton::leave_event(event);
}

View file

@ -52,7 +52,7 @@ void MoveTool::on_mousedown(Layer& layer, GUI::MouseEvent& event, GUI::MouseEven
m_layer_being_moved = layer;
m_event_origin = image_event.position();
m_layer_origin = layer.location();
m_editor->window()->set_override_cursor(GUI::StandardCursor::Move);
m_editor->window()->set_override_cursor(Gfx::StandardCursor::Move);
}
void MoveTool::on_mousemove(Layer&, GUI::MouseEvent&, GUI::MouseEvent& image_event)
@ -69,7 +69,7 @@ void MoveTool::on_mouseup(Layer&, GUI::MouseEvent& event, GUI::MouseEvent&)
if (event.button() != GUI::MouseButton::Left)
return;
m_layer_being_moved = nullptr;
m_editor->window()->set_override_cursor(GUI::StandardCursor::None);
m_editor->window()->set_override_cursor(Gfx::StandardCursor::None);
}
void MoveTool::on_keydown(GUI::KeyEvent& event)

View file

@ -515,59 +515,59 @@ int main(int argc, char** argv)
auto& radio_cursor_none = cursor_group_box.add<GUI::RadioButton>("None");
radio_cursor_none.set_checked(true);
radio_cursor_none.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::None);
window->set_override_cursor(Gfx::StandardCursor::None);
};
auto& radio_cursor_arrow = cursor_group_box.add<GUI::RadioButton>("Arrow");
radio_cursor_arrow.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::Arrow);
window->set_override_cursor(Gfx::StandardCursor::Arrow);
};
auto& radio_cursor_i_beam = cursor_group_box.add<GUI::RadioButton>("IBeam");
radio_cursor_i_beam.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::IBeam);
window->set_override_cursor(Gfx::StandardCursor::IBeam);
};
auto& radio_cursor_resize_horizontal = cursor_group_box.add<GUI::RadioButton>("ResizeHorizontal");
radio_cursor_resize_horizontal.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::ResizeHorizontal);
window->set_override_cursor(Gfx::StandardCursor::ResizeHorizontal);
};
auto& radio_cursor_resize_vertical = cursor_group_box.add<GUI::RadioButton>("ResizeVertical");
radio_cursor_resize_vertical.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::ResizeVertical);
window->set_override_cursor(Gfx::StandardCursor::ResizeVertical);
};
auto& radio_cursor_resize_diagonal_tlbr = cursor_group_box.add<GUI::RadioButton>("ResizeDiagonalTLBR");
radio_cursor_resize_diagonal_tlbr.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::ResizeDiagonalTLBR);
window->set_override_cursor(Gfx::StandardCursor::ResizeDiagonalTLBR);
};
auto& radio_cursor_resize_diagonal_bltr = cursor_group_box.add<GUI::RadioButton>("ResizeDiagonalBLTR");
radio_cursor_resize_diagonal_bltr.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::ResizeDiagonalBLTR);
window->set_override_cursor(Gfx::StandardCursor::ResizeDiagonalBLTR);
};
auto& radio_cursor_resize_column = cursor_group_box.add<GUI::RadioButton>("ResizeColumn");
radio_cursor_resize_column.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::ResizeColumn);
window->set_override_cursor(Gfx::StandardCursor::ResizeColumn);
};
auto& radio_cursor_resize_row = cursor_group_box.add<GUI::RadioButton>("ResizeRow");
radio_cursor_resize_row.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::ResizeRow);
window->set_override_cursor(Gfx::StandardCursor::ResizeRow);
};
auto& radio_cursor_hand = cursor_group_box.add<GUI::RadioButton>("Hand");
radio_cursor_hand.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::Hand);
window->set_override_cursor(Gfx::StandardCursor::Hand);
};
auto& radio_cursor_help = cursor_group_box.add<GUI::RadioButton>("Help");
radio_cursor_help.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::Help);
window->set_override_cursor(Gfx::StandardCursor::Help);
};
auto& radio_cursor_drag = cursor_group_box.add<GUI::RadioButton>("Drag");
radio_cursor_drag.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::Drag);
window->set_override_cursor(Gfx::StandardCursor::Drag);
};
auto& radio_cursor_move = cursor_group_box.add<GUI::RadioButton>("Move");
radio_cursor_move.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::Move);
window->set_override_cursor(Gfx::StandardCursor::Move);
};
auto& radio_cursor_wait = cursor_group_box.add<GUI::RadioButton>("Wait");
radio_cursor_wait.on_checked = [&](bool) {
window->set_override_cursor(GUI::StandardCursor::Wait);
window->set_override_cursor(Gfx::StandardCursor::Wait);
};
app->set_menubar(move(menubar));

View file

@ -209,9 +209,9 @@ void Editor::mousemove_event(GUI::MouseEvent& event)
auto ruler_line_rect = ruler_content_rect(text_position.line());
auto hovering_lines_ruler = (event.position().x() < ruler_line_rect.width());
if (hovering_lines_ruler && !is_in_drag_select())
window()->set_override_cursor(GUI::StandardCursor::Arrow);
window()->set_override_cursor(Gfx::StandardCursor::Arrow);
else if (m_hovering_editor)
window()->set_override_cursor(m_hovering_link && m_holding_ctrl ? GUI::StandardCursor::Hand : GUI::StandardCursor::IBeam);
window()->set_override_cursor(m_hovering_link && m_holding_ctrl ? Gfx::StandardCursor::Hand : Gfx::StandardCursor::IBeam);
for (auto& span : document().spans()) {
if (span.range.contains(m_previous_text_position) && !span.range.contains(text_position)) {

View file

@ -497,22 +497,22 @@ void VBForm::set_cursor_type_from_grabber(Direction grabber)
switch (grabber) {
case Direction::Up:
case Direction::Down:
window()->set_override_cursor(GUI::StandardCursor::ResizeVertical);
window()->set_override_cursor(Gfx::StandardCursor::ResizeVertical);
break;
case Direction::Left:
case Direction::Right:
window()->set_override_cursor(GUI::StandardCursor::ResizeHorizontal);
window()->set_override_cursor(Gfx::StandardCursor::ResizeHorizontal);
break;
case Direction::UpLeft:
case Direction::DownRight:
window()->set_override_cursor(GUI::StandardCursor::ResizeDiagonalTLBR);
window()->set_override_cursor(Gfx::StandardCursor::ResizeDiagonalTLBR);
break;
case Direction::UpRight:
case Direction::DownLeft:
window()->set_override_cursor(GUI::StandardCursor::ResizeDiagonalBLTR);
window()->set_override_cursor(Gfx::StandardCursor::ResizeDiagonalBLTR);
break;
case Direction::None:
window()->set_override_cursor(GUI::StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
break;
}

View file

@ -100,11 +100,11 @@ void ColorInput::mouseup_event(MouseEvent& event)
void ColorInput::mousemove_event(MouseEvent& event)
{
if (color_rect().contains(event.position())) {
window()->set_override_cursor(StandardCursor::Hand);
window()->set_override_cursor(Gfx::StandardCursor::Hand);
event.accept();
return;
} else {
window()->set_override_cursor(StandardCursor::IBeam);
window()->set_override_cursor(Gfx::StandardCursor::IBeam);
}
TextEditor::mousemove_event(event);

View file

@ -180,7 +180,7 @@ void HeaderView::mousemove_event(MouseEvent& event)
bool found_hovered_header = false;
for (int i = 0; i < section_count; ++i) {
if (section_resize_grabbable_rect(i).contains(event.position())) {
window()->set_override_cursor(StandardCursor::ResizeColumn);
window()->set_override_cursor(Gfx::StandardCursor::ResizeColumn);
set_hovered_section(-1);
return;
}
@ -192,7 +192,7 @@ void HeaderView::mousemove_event(MouseEvent& event)
if (!found_hovered_header)
set_hovered_section(-1);
}
window()->set_override_cursor(StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
}
void HeaderView::mouseup_event(MouseEvent& event)
@ -200,7 +200,7 @@ void HeaderView::mouseup_event(MouseEvent& event)
if (event.button() == MouseButton::Left) {
if (m_in_section_resize) {
if (!section_resize_grabbable_rect(m_resizing_section).contains(event.position()))
window()->set_override_cursor(StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
m_in_section_resize = false;
return;
}
@ -337,7 +337,7 @@ void HeaderView::leave_event(Core::Event& event)
{
Widget::leave_event(event);
set_hovered_section(-1);
window()->set_override_cursor(StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
}
Gfx::TextAlignment HeaderView::section_alignment(int section) const

View file

@ -112,13 +112,13 @@ void ResizeCorner::mousedown_event(MouseEvent& event)
void ResizeCorner::enter_event(Core::Event& event)
{
window()->set_override_cursor(StandardCursor::ResizeDiagonalTLBR);
window()->set_override_cursor(Gfx::StandardCursor::ResizeDiagonalTLBR);
Widget::enter_event(event);
}
void ResizeCorner::leave_event(Core::Event& event)
{
window()->set_override_cursor(StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
Widget::leave_event(event);
}

View file

@ -62,12 +62,12 @@ void Splitter::override_cursor(bool do_override)
{
if (do_override) {
if (!m_overriding_cursor) {
window()->set_override_cursor(m_orientation == Orientation::Horizontal ? StandardCursor::ResizeColumn : StandardCursor::ResizeRow);
window()->set_override_cursor(m_orientation == Orientation::Horizontal ? Gfx::StandardCursor::ResizeColumn : Gfx::StandardCursor::ResizeRow);
m_overriding_cursor = true;
}
} else {
if (m_overriding_cursor) {
window()->set_override_cursor(StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
m_overriding_cursor = false;
}
}
@ -198,7 +198,7 @@ void Splitter::mouseup_event(MouseEvent& event)
m_first_resizee = nullptr;
m_second_resizee = nullptr;
if (!rect().contains(event.position()))
window()->set_override_cursor(StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
}
}

View file

@ -1343,7 +1343,7 @@ void TextEditor::enter_event(Core::Event&)
{
ASSERT(window());
if (!is_displayonly())
window()->set_override_cursor(StandardCursor::IBeam);
window()->set_override_cursor(Gfx::StandardCursor::IBeam);
m_automatic_selection_scroll_timer->stop();
}
@ -1351,7 +1351,7 @@ void TextEditor::enter_event(Core::Event&)
void TextEditor::leave_event(Core::Event&)
{
ASSERT(window());
window()->set_override_cursor(StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
if (m_in_drag_select)
m_automatic_selection_scroll_timer->start();

View file

@ -93,7 +93,7 @@ void Window::show()
auto* parent_window = find_parent_window();
m_override_cursor = StandardCursor::None;
m_override_cursor = Gfx::StandardCursor::None;
auto response = WindowServerConnection::the().send_sync<Messages::WindowServer::CreateWindow>(
m_rect_when_windowless,
!m_moved_by_client,
@ -138,7 +138,7 @@ void Window::server_did_destroy()
m_pending_paint_event_rects.clear();
m_back_bitmap = nullptr;
m_front_bitmap = nullptr;
m_override_cursor = StandardCursor::None;
m_override_cursor = Gfx::StandardCursor::None;
}
void Window::hide()
@ -226,7 +226,7 @@ void Window::set_window_type(WindowType window_type)
m_window_type = window_type;
}
void Window::set_override_cursor(StandardCursor cursor)
void Window::set_override_cursor(Gfx::StandardCursor cursor)
{
if (!is_visible())
return;

View file

@ -36,26 +36,10 @@
#include <LibGfx/Color.h>
#include <LibGfx/Forward.h>
#include <LibGfx/Rect.h>
#include <LibGfx/StandardCursor.h>
namespace GUI {
enum class StandardCursor {
None = 0,
Arrow,
IBeam,
ResizeHorizontal,
ResizeVertical,
ResizeDiagonalTLBR,
ResizeDiagonalBLTR,
ResizeColumn,
ResizeRow,
Hand,
Help,
Drag,
Move,
Wait,
};
class Window : public Core::Object {
C_OBJECT(Window)
public:
@ -184,7 +168,7 @@ public:
void set_no_resize_aspect_ratio() { set_resize_aspect_ratio({}); }
void set_resize_aspect_ratio(const Optional<Gfx::IntSize>& ratio);
void set_override_cursor(StandardCursor);
void set_override_cursor(Gfx::StandardCursor);
void set_override_cursor(const Gfx::Bitmap&);
void set_icon(const Gfx::Bitmap*);
@ -257,7 +241,7 @@ private:
Gfx::IntSize m_base_size;
Color m_background_color { Color::WarmGray };
WindowType m_window_type { WindowType::Normal };
StandardCursor m_override_cursor { StandardCursor::None };
Gfx::StandardCursor m_override_cursor { Gfx::StandardCursor::None };
bool m_is_active { false };
bool m_is_active_input { false };
bool m_has_alpha_channel { false };

View file

@ -0,0 +1,48 @@
/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
namespace Gfx {
enum class StandardCursor {
None = 0,
Arrow,
IBeam,
ResizeHorizontal,
ResizeVertical,
ResizeDiagonalTLBR,
ResizeDiagonalBLTR,
ResizeColumn,
ResizeRow,
Hand,
Help,
Drag,
Move,
Wait,
};
}

View file

@ -629,9 +629,9 @@ void TerminalWidget::mousemove_event(GUI::MouseEvent& event)
m_hovered_href = {};
}
if (!m_hovered_href.is_empty())
window()->set_override_cursor(GUI::StandardCursor::Hand);
window()->set_override_cursor(Gfx::StandardCursor::Hand);
else
window()->set_override_cursor(GUI::StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
update();
}
@ -667,7 +667,7 @@ void TerminalWidget::mousemove_event(GUI::MouseEvent& event)
void TerminalWidget::leave_event(Core::Event&)
{
window()->set_override_cursor(GUI::StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
bool should_update = !m_hovered_href.is_empty();
m_hovered_href = {};
m_hovered_href_id = {};

View file

@ -150,7 +150,7 @@ void InProcessWebView::page_did_change_selection()
update();
}
void InProcessWebView::page_did_request_cursor_change(GUI::StandardCursor cursor)
void InProcessWebView::page_did_request_cursor_change(Gfx::StandardCursor cursor)
{
if (window())
window()->set_override_cursor(cursor);
@ -358,7 +358,7 @@ void InProcessWebView::load_html(const StringView& html, const URL& url)
bool InProcessWebView::load(const URL& url)
{
if (window())
window()->set_override_cursor(GUI::StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
return page().main_frame().loader().load(url, FrameLoader::Type::Navigation);
}
@ -378,7 +378,7 @@ LayoutDocument* InProcessWebView::layout_root()
void InProcessWebView::page_did_request_scroll_into_view(const Gfx::IntRect& rect)
{
scroll_into_view(rect, true, true);
window()->set_override_cursor(GUI::StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
}
void InProcessWebView::load_empty_document()

View file

@ -91,7 +91,7 @@ private:
virtual void page_did_set_document_in_main_frame(DOM::Document*) override;
virtual void page_did_start_loading(const URL&) override;
virtual void page_did_change_selection() override;
virtual void page_did_request_cursor_change(GUI::StandardCursor) override;
virtual void page_did_request_cursor_change(Gfx::StandardCursor) override;
virtual void page_did_request_context_menu(const Gfx::IntPoint&) override;
virtual void page_did_request_link_context_menu(const Gfx::IntPoint&, const URL&, const String& target, unsigned modifiers) override;
virtual void page_did_click_link(const URL&, const String& target, unsigned modifiers) override;

View file

@ -138,7 +138,7 @@ void OutOfProcessWebView::notify_server_did_request_scroll_into_view(Badge<WebCo
void OutOfProcessWebView::notify_server_did_hover_link(Badge<WebContentClient>, const URL& url)
{
if (window())
window()->set_override_cursor(GUI::StandardCursor::Hand);
window()->set_override_cursor(Gfx::StandardCursor::Hand);
if (on_link_hover)
on_link_hover(url);
}
@ -146,7 +146,7 @@ void OutOfProcessWebView::notify_server_did_hover_link(Badge<WebContentClient>,
void OutOfProcessWebView::notify_server_did_unhover_link(Badge<WebContentClient>)
{
if (window())
window()->set_override_cursor(GUI::StandardCursor::None);
window()->set_override_cursor(Gfx::StandardCursor::None);
if (on_link_hover)
on_link_hover({});
}

View file

@ -216,11 +216,11 @@ bool EventHandler::handle_mousemove(const Gfx::IntPoint& position, unsigned butt
}
if (is_hovering_link)
page_client.page_did_request_cursor_change(GUI::StandardCursor::Hand);
page_client.page_did_request_cursor_change(Gfx::StandardCursor::Hand);
else if (is_hovering_text)
page_client.page_did_request_cursor_change(GUI::StandardCursor::IBeam);
page_client.page_did_request_cursor_change(Gfx::StandardCursor::IBeam);
else
page_client.page_did_request_cursor_change(GUI::StandardCursor::None);
page_client.page_did_request_cursor_change(Gfx::StandardCursor::None);
if (hovered_node_changed) {
RefPtr<HTML::HTMLElement> hovered_html_element = document.hovered_node() ? document.hovered_node()->enclosing_html_element() : nullptr;

View file

@ -82,7 +82,7 @@ public:
virtual void page_did_change_title(const String&) { }
virtual void page_did_start_loading(const URL&) { }
virtual void page_did_change_selection() { }
virtual void page_did_request_cursor_change(GUI::StandardCursor) { }
virtual void page_did_request_cursor_change(Gfx::StandardCursor) { }
virtual void page_did_request_context_menu(const Gfx::IntPoint&) { }
virtual void page_did_request_link_context_menu(const Gfx::IntPoint&, const URL&, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers) { }
virtual void page_did_click_link(const URL&, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers) { }

View file

@ -610,7 +610,7 @@ OwnPtr<Messages::WindowServer::SetWindowOverrideCursorResponse> ClientConnection
return nullptr;
}
auto& window = *(*it).value;
window.set_override_cursor(Cursor::create((StandardCursor)message.cursor_type()));
window.set_override_cursor(Cursor::create((Gfx::StandardCursor)message.cursor_type()));
Compositor::the().invalidate_cursor();
return make<Messages::WindowServer::SetWindowOverrideCursorResponse>();
}

View file

@ -49,36 +49,36 @@ NonnullRefPtr<Cursor> Cursor::create(NonnullRefPtr<Gfx::Bitmap>&& bitmap, const
return adopt(*new Cursor(move(bitmap), hotspot));
}
RefPtr<Cursor> Cursor::create(StandardCursor standard_cursor)
RefPtr<Cursor> Cursor::create(Gfx::StandardCursor standard_cursor)
{
switch (standard_cursor) {
case StandardCursor::None:
case Gfx::StandardCursor::None:
return nullptr;
case StandardCursor::Arrow:
case Gfx::StandardCursor::Arrow:
return WindowManager::the().arrow_cursor();
case StandardCursor::IBeam:
case Gfx::StandardCursor::IBeam:
return WindowManager::the().i_beam_cursor();
case StandardCursor::ResizeHorizontal:
case Gfx::StandardCursor::ResizeHorizontal:
return WindowManager::the().resize_horizontally_cursor();
case StandardCursor::ResizeVertical:
case Gfx::StandardCursor::ResizeVertical:
return WindowManager::the().resize_vertically_cursor();
case StandardCursor::ResizeDiagonalTLBR:
case Gfx::StandardCursor::ResizeDiagonalTLBR:
return WindowManager::the().resize_diagonally_tlbr_cursor();
case StandardCursor::ResizeDiagonalBLTR:
case Gfx::StandardCursor::ResizeDiagonalBLTR:
return WindowManager::the().resize_diagonally_bltr_cursor();
case StandardCursor::ResizeColumn:
case Gfx::StandardCursor::ResizeColumn:
return WindowManager::the().resize_column_cursor();
case StandardCursor::ResizeRow:
case Gfx::StandardCursor::ResizeRow:
return WindowManager::the().resize_row_cursor();
case StandardCursor::Hand:
case Gfx::StandardCursor::Hand:
return WindowManager::the().hand_cursor();
case StandardCursor::Help:
case Gfx::StandardCursor::Help:
return WindowManager::the().help_cursor();
case StandardCursor::Drag:
case Gfx::StandardCursor::Drag:
return WindowManager::the().drag_cursor();
case StandardCursor::Move:
case Gfx::StandardCursor::Move:
return WindowManager::the().move_cursor();
case StandardCursor::Wait:
case Gfx::StandardCursor::Wait:
return WindowManager::the().wait_cursor();
}
ASSERT_NOT_REACHED();

View file

@ -27,31 +27,15 @@
#pragma once
#include <LibGfx/Bitmap.h>
#include <LibGfx/StandardCursor.h>
namespace WindowServer {
enum class StandardCursor {
None = 0,
Arrow,
IBeam,
ResizeHorizontal,
ResizeVertical,
ResizeDiagonalTLBR,
ResizeDiagonalBLTR,
ResizeColumn,
ResizeRow,
Hand,
Help,
Drag,
Move,
Wait,
};
class Cursor : public RefCounted<Cursor> {
public:
static NonnullRefPtr<Cursor> create(NonnullRefPtr<Gfx::Bitmap>&&, const Gfx::IntPoint& hotspot);
static NonnullRefPtr<Cursor> create(NonnullRefPtr<Gfx::Bitmap>&&);
static RefPtr<Cursor> create(StandardCursor);
static RefPtr<Cursor> create(Gfx::StandardCursor);
~Cursor();
Gfx::IntPoint hotspot() const { return m_hotspot; }