瀏覽代碼

WindowServer+LibGfx: Added Crosshair cursor

Uma Sankar Yedida 4 年之前
父節點
當前提交
9ccae7a908

+ 1 - 0
Base/etc/WindowServer/WindowServer.ini

@@ -20,6 +20,7 @@ Hand=/res/cursors/hand.png
 Help=/res/cursors/help.png
 Help=/res/cursors/help.png
 Drag=/res/cursors/drag.png
 Drag=/res/cursors/drag.png
 Wait=/res/cursors/wait.png
 Wait=/res/cursors/wait.png
+Crosshair=/res/cursors/crosshair.png
 
 
 [Input]
 [Input]
 DoubleClickSpeed=250
 DoubleClickSpeed=250

二進制
Base/res/cursors/crosshair.png


+ 4 - 0
Demos/WidgetGallery/main.cpp

@@ -521,6 +521,10 @@ int main(int argc, char** argv)
     radio_cursor_arrow.on_checked = [&](bool) {
     radio_cursor_arrow.on_checked = [&](bool) {
         window->set_cursor(Gfx::StandardCursor::Arrow);
         window->set_cursor(Gfx::StandardCursor::Arrow);
     };
     };
+    auto& radio_crosshair_arrow = cursor_group_box.add<GUI::RadioButton>("Crosshair");
+    radio_crosshair_arrow.on_checked = [&](bool) {
+        window->set_cursor(Gfx::StandardCursor::Crosshair);
+    };
     auto& radio_cursor_i_beam = cursor_group_box.add<GUI::RadioButton>("IBeam");
     auto& radio_cursor_i_beam = cursor_group_box.add<GUI::RadioButton>("IBeam");
     radio_cursor_i_beam.on_checked = [&](bool) {
     radio_cursor_i_beam.on_checked = [&](bool) {
         window->set_cursor(Gfx::StandardCursor::IBeam);
         window->set_cursor(Gfx::StandardCursor::IBeam);

+ 1 - 0
Libraries/LibGfx/StandardCursor.h

@@ -31,6 +31,7 @@ namespace Gfx {
 enum class StandardCursor {
 enum class StandardCursor {
     None = 0,
     None = 0,
     Arrow,
     Arrow,
+    Crosshair,
     IBeam,
     IBeam,
     ResizeHorizontal,
     ResizeHorizontal,
     ResizeVertical,
     ResizeVertical,

+ 2 - 0
Services/WindowServer/Cursor.cpp

@@ -56,6 +56,8 @@ RefPtr<Cursor> Cursor::create(Gfx::StandardCursor standard_cursor)
         return nullptr;
         return nullptr;
     case Gfx::StandardCursor::Arrow:
     case Gfx::StandardCursor::Arrow:
         return WindowManager::the().arrow_cursor();
         return WindowManager::the().arrow_cursor();
+    case Gfx::StandardCursor::Crosshair:
+        return WindowManager::the().crosshair_cursor();
     case Gfx::StandardCursor::IBeam:
     case Gfx::StandardCursor::IBeam:
         return WindowManager::the().i_beam_cursor();
         return WindowManager::the().i_beam_cursor();
     case Gfx::StandardCursor::ResizeHorizontal:
     case Gfx::StandardCursor::ResizeHorizontal:

+ 1 - 0
Services/WindowServer/WindowManager.cpp

@@ -126,6 +126,7 @@ void WindowManager::reload_config(bool set_screen)
     m_move_cursor = get_cursor("Move");
     m_move_cursor = get_cursor("Move");
     m_drag_cursor = get_cursor("Drag");
     m_drag_cursor = get_cursor("Drag");
     m_wait_cursor = get_cursor("Wait");
     m_wait_cursor = get_cursor("Wait");
+    m_crosshair_cursor = get_cursor("Crosshair");
 }
 }
 
 
 const Gfx::Font& WindowManager::font() const
 const Gfx::Font& WindowManager::font() const

+ 2 - 0
Services/WindowServer/WindowManager.h

@@ -124,6 +124,7 @@ public:
 
 
     const Cursor& active_cursor() const;
     const Cursor& active_cursor() const;
     const Cursor& arrow_cursor() const { return *m_arrow_cursor; }
     const Cursor& arrow_cursor() const { return *m_arrow_cursor; }
+    const Cursor& crosshair_cursor() const { return *m_crosshair_cursor; }
     const Cursor& hand_cursor() const { return *m_hand_cursor; }
     const Cursor& hand_cursor() const { return *m_hand_cursor; }
     const Cursor& help_cursor() const { return *m_help_cursor; }
     const Cursor& help_cursor() const { return *m_help_cursor; }
     const Cursor& resize_horizontally_cursor() const { return *m_resize_horizontally_cursor; }
     const Cursor& resize_horizontally_cursor() const { return *m_resize_horizontally_cursor; }
@@ -260,6 +261,7 @@ private:
     RefPtr<Cursor> m_move_cursor;
     RefPtr<Cursor> m_move_cursor;
     RefPtr<Cursor> m_drag_cursor;
     RefPtr<Cursor> m_drag_cursor;
     RefPtr<Cursor> m_wait_cursor;
     RefPtr<Cursor> m_wait_cursor;
+    RefPtr<Cursor> m_crosshair_cursor;
 
 
     InlineLinkedList<Window> m_windows_in_order;
     InlineLinkedList<Window> m_windows_in_order;