mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 05:17:35 +00:00
WindowServer: Add a maximize/unmaximize button to windows.
This commit is contained in:
parent
dddf45f563
commit
641893104a
8 changed files with 95 additions and 7 deletions
|
@ -42,6 +42,38 @@ static CharacterBitmap* s_minimize_button_bitmap;
|
|||
static const int s_minimize_button_bitmap_width = 8;
|
||||
static const int s_minimize_button_bitmap_height = 9;
|
||||
|
||||
static const char* s_maximize_button_bitmap_data = {
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
" ## "
|
||||
" #### "
|
||||
" ###### "
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
};
|
||||
|
||||
static CharacterBitmap* s_maximize_button_bitmap;
|
||||
static const int s_maximize_button_bitmap_width = 8;
|
||||
static const int s_maximize_button_bitmap_height = 9;
|
||||
|
||||
static const char* s_unmaximize_button_bitmap_data = {
|
||||
" "
|
||||
" ## "
|
||||
" #### "
|
||||
" ###### "
|
||||
" "
|
||||
" ###### "
|
||||
" #### "
|
||||
" ## "
|
||||
" "
|
||||
};
|
||||
|
||||
static CharacterBitmap* s_unmaximize_button_bitmap;
|
||||
static const int s_unmaximize_button_bitmap_width = 8;
|
||||
static const int s_unmaximize_button_bitmap_height = 9;
|
||||
|
||||
WSWindowFrame::WSWindowFrame(WSWindow& window)
|
||||
: m_window(window)
|
||||
{
|
||||
|
@ -51,14 +83,25 @@ WSWindowFrame::WSWindowFrame(WSWindow& window)
|
|||
if (!s_minimize_button_bitmap)
|
||||
s_minimize_button_bitmap = &CharacterBitmap::create_from_ascii(s_minimize_button_bitmap_data, s_minimize_button_bitmap_width, s_minimize_button_bitmap_height).leak_ref();
|
||||
|
||||
m_buttons.append(make<WSButton>(*this, *s_close_button_bitmap, [this] {
|
||||
if (!s_maximize_button_bitmap)
|
||||
s_maximize_button_bitmap = &CharacterBitmap::create_from_ascii(s_maximize_button_bitmap_data, s_maximize_button_bitmap_width, s_maximize_button_bitmap_height).leak_ref();
|
||||
|
||||
if (!s_unmaximize_button_bitmap)
|
||||
s_unmaximize_button_bitmap = &CharacterBitmap::create_from_ascii(s_unmaximize_button_bitmap_data, s_unmaximize_button_bitmap_width, s_unmaximize_button_bitmap_height).leak_ref();
|
||||
|
||||
m_buttons.append(make<WSButton>(*this, *s_close_button_bitmap, [this] (auto&) {
|
||||
WSEvent close_request(WSEvent::WindowCloseRequest);
|
||||
m_window.event(close_request);
|
||||
}));
|
||||
|
||||
m_buttons.append(make<WSButton>(*this, *s_minimize_button_bitmap, [this] {
|
||||
m_buttons.append(make<WSButton>(*this, *s_minimize_button_bitmap, [this] (auto&) {
|
||||
m_window.set_minimized(true);
|
||||
}));
|
||||
|
||||
m_buttons.append(make<WSButton>(*this, *s_maximize_button_bitmap, [this] (auto& button) {
|
||||
m_window.set_maximized(!m_window.is_maximized());
|
||||
button.set_bitmap(m_window.is_maximized() ? *s_unmaximize_button_bitmap : *s_maximize_button_bitmap);
|
||||
}));
|
||||
}
|
||||
|
||||
WSWindowFrame::~WSWindowFrame()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue