Просмотр исходного кода

LibGUI: Add callback for screen rect change to Desktop.h

callbacks for screen rect changes can be added with
on_receive_screen_rects()
Peter Elliott 4 лет назад
Родитель
Сommit
b8f3441300
2 измененных файлов с 10 добавлено и 0 удалено
  1. 3 0
      Userland/Libraries/LibGUI/Desktop.cpp
  2. 7 0
      Userland/Libraries/LibGUI/Desktop.h

+ 3 - 0
Userland/Libraries/LibGUI/Desktop.cpp

@@ -39,6 +39,9 @@ void Desktop::did_receive_screen_rects(Badge<WindowServerConnection>, const Vect
 
     m_virtual_desktop_rows = virtual_desktop_rows;
     m_virtual_desktop_columns = virtual_desktop_columns;
+
+    for (auto& callback : m_receive_rects_callbacks)
+        callback(*this);
 }
 
 void Desktop::set_background_color(const StringView& background_color)

+ 7 - 0
Userland/Libraries/LibGUI/Desktop.h

@@ -43,12 +43,19 @@ public:
 
     void did_receive_screen_rects(Badge<WindowServerConnection>, const Vector<Gfx::IntRect, 4>&, size_t, unsigned, unsigned);
 
+    template<typename F>
+    void on_receive_screen_rects(F&& callback)
+    {
+        m_receive_rects_callbacks.append(forward<F>(callback));
+    }
+
 private:
     Vector<Gfx::IntRect, default_screen_rect_count> m_rects;
     size_t m_main_screen_index { 0 };
     Gfx::IntRect m_bounding_rect;
     unsigned m_virtual_desktop_rows { 1 };
     unsigned m_virtual_desktop_columns { 1 };
+    Vector<Function<void(Desktop&)>> m_receive_rects_callbacks;
 };
 
 }