#pragma once #include #include #include #include class Painter; class WSKeyEvent; class WSWindow; class WSWindowSwitcher : public CObject { public: static WSWindowSwitcher& the(); WSWindowSwitcher(); virtual ~WSWindowSwitcher() override; bool is_visible() const { return m_visible; } void set_visible(bool); void show() { set_visible(true); } void hide() { set_visible(false); } void on_key_event(const WSKeyEvent&); void refresh(); void refresh_if_needed(); void draw(); int thumbnail_width() { return 40; } int thumbnail_height() { return 40; } int item_height() { return 10 + thumbnail_height(); } int padding() { return 8; } int item_padding() { return 8; } WSWindow* selected_window(); WSWindow* switcher_window() { return m_switcher_window.ptr(); } private: OwnPtr m_switcher_window; Rect m_rect; bool m_visible { false }; Vector> m_windows; int m_selected_index { 0 }; };