WindowServer: Add a WSWindowType enum.
So far there's only Normal and Menu. Maybe we'll need more later.
This commit is contained in:
parent
111589a558
commit
c61f9eba61
Notes:
sideshowbarker
2024-07-19 15:46:31 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/c61f9eba61a
5 changed files with 15 additions and 3 deletions
|
@ -6,6 +6,7 @@
|
|||
|
||||
WSWindow::WSWindow(WSMenu& menu)
|
||||
: m_lock("WSWindow (menu)")
|
||||
, m_type(WSWindowType::Menu)
|
||||
, m_menu(&menu)
|
||||
{
|
||||
WSWindowManager::the().add_window(*this);
|
||||
|
@ -13,6 +14,7 @@ WSWindow::WSWindow(WSMenu& menu)
|
|||
|
||||
WSWindow::WSWindow(Process& process, int window_id)
|
||||
: m_lock("WSWindow (normal)")
|
||||
, m_type(WSWindowType::Normal)
|
||||
, m_process(&process)
|
||||
, m_window_id(window_id)
|
||||
, m_pid(process.pid())
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <AK/Badge.h>
|
||||
#include <Kernel/Process.h>
|
||||
#include "WSMessageReceiver.h"
|
||||
#include <WindowServer/WSWindowType.h>
|
||||
|
||||
class Process;
|
||||
class WSMenu;
|
||||
|
@ -19,7 +20,7 @@ public:
|
|||
explicit WSWindow(WSMenu&);
|
||||
virtual ~WSWindow() override;
|
||||
|
||||
bool is_menu() const { return m_menu; }
|
||||
WSWindowType type() const { return m_type; }
|
||||
int window_id() const { return m_window_id; }
|
||||
|
||||
String title() const { return m_title; }
|
||||
|
@ -72,6 +73,7 @@ private:
|
|||
Lock m_lock;
|
||||
String m_title;
|
||||
Rect m_rect;
|
||||
WSWindowType m_type { WSWindowType::Normal };
|
||||
bool m_is_being_dragged { false };
|
||||
bool m_global_cursor_tracking_enabled { false };
|
||||
bool m_visible { true };
|
||||
|
|
|
@ -259,7 +259,7 @@ void WSWindowManager::paint_window_frame(WSWindow& window)
|
|||
LOCKER(m_lock);
|
||||
//printf("[WM] paint_window_frame {%p}, rect: %d,%d %dx%d\n", &window, window.rect().x(), window.rect().y(), window.rect().width(), window.rect().height());
|
||||
|
||||
if (window.is_menu()) {
|
||||
if (window.type() == WSWindowType::Menu) {
|
||||
m_back_painter->draw_rect(window.rect().inflated(2, 2), Color::LightGray);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <AK/HashMap.h>
|
||||
#include "WSMessageReceiver.h"
|
||||
#include "WSMenuBar.h"
|
||||
#include <WindowServer/WSWindowType.h>
|
||||
|
||||
class WSScreen;
|
||||
class WSMenuBar;
|
||||
|
@ -75,7 +76,7 @@ private:
|
|||
void handle_close_button_mouse_event(WSWindow&, WSMouseEvent&);
|
||||
|
||||
void set_active_window(WSWindow*);
|
||||
|
||||
template<typename Callback> void for_each_visible_window_of_type(WSWindowType, Callback);
|
||||
template<typename Callback> void for_each_active_menubar_menu(Callback);
|
||||
void close_current_menu();
|
||||
WSMenu& create_menu(String&& name);
|
||||
|
|
7
WindowServer/WSWindowType.h
Normal file
7
WindowServer/WSWindowType.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
enum class WSWindowType {
|
||||
Invalid = 0,
|
||||
Normal,
|
||||
Menu
|
||||
};
|
Loading…
Add table
Reference in a new issue