From 23d99e92b9b67a6acc00f72c7ec29e80437a04c1 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 30 Apr 2020 12:58:38 +0200 Subject: [PATCH] WindowServer: Add action icons to the window menus --- Base/res/icons/16x16/window-close.png | Bin 0 -> 115 bytes Base/res/icons/16x16/window-maximize.png | Bin 0 -> 90 bytes Base/res/icons/16x16/window-minimize.png | Bin 0 -> 92 bytes Base/res/icons/16x16/window-restore.png | Bin 0 -> 100 bytes Servers/WindowServer/MenuItem.cpp | 8 ++++ Servers/WindowServer/MenuItem.h | 2 +- Servers/WindowServer/Window.cpp | 52 +++++++++++++++++++++-- Servers/WindowServer/Window.h | 3 ++ 8 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 Base/res/icons/16x16/window-close.png create mode 100644 Base/res/icons/16x16/window-maximize.png create mode 100644 Base/res/icons/16x16/window-minimize.png create mode 100644 Base/res/icons/16x16/window-restore.png diff --git a/Base/res/icons/16x16/window-close.png b/Base/res/icons/16x16/window-close.png new file mode 100644 index 0000000000000000000000000000000000000000..61ddee97cc22c4a84cc5d1870b19df01e8230d68 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7tUO&DLo7}wCrGfGF#caS zL!(fQi7hdCF@u|u$>Y%T9!t0jR;4a7Igs(F^?$^Z|Bo*nc3JXTqP=hvD?^w%H~XxU T*B&!4Ffe$!`njxgN@xNA{97fz literal 0 HcmV?d00001 diff --git a/Base/res/icons/16x16/window-maximize.png b/Base/res/icons/16x16/window-maximize.png new file mode 100644 index 0000000000000000000000000000000000000000..ef1fd575788ba2076b2c6327ef4a6e9a9b43435c GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s76g^!WLo7}wCrGd=GyG{! sn$s|`A+0G(vh#{hPwV1@0}KprF0nA4+qcDpfq{X+)78&qol`;+0Kown>Hq)$ literal 0 HcmV?d00001 diff --git a/Base/res/icons/16x16/window-minimize.png b/Base/res/icons/16x16/window-minimize.png new file mode 100644 index 0000000000000000000000000000000000000000..72ddab9fc5e0cf8eb20e284d596fdf06acfd4a6b GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7ls#P>Lo7}wCrGd!W-xdp u@ZWz;m77i5e|1OQIOl);ZdVf68FC_67{%BGQWzK*7(8A5T-G@yGywp@pcj<@ literal 0 HcmV?d00001 diff --git a/Base/res/icons/16x16/window-restore.png b/Base/res/icons/16x16/window-restore.png new file mode 100644 index 0000000000000000000000000000000000000000..cd305dbd6c58cd815a634001435c8034af264274 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7v^`xMLo7}wCrGfGu>W5u zp`M_!VCI4-HziZyWW~ycB=Gset_window_menu_of(*this); - m_window_menu->add_item(make(*m_window_menu, 1, m_minimized ? "Unminimize" : "Minimize")); - m_window_menu->add_item(make(*m_window_menu, 2, m_maximized ? "Restore" : "Maximize")); + auto minimize_item = make(*m_window_menu, 1, m_minimized ? "Unminimize" : "Minimize"); + m_window_menu_minimize_item = minimize_item.ptr(); + m_window_menu->add_item(move(minimize_item)); + + auto maximize_item = make(*m_window_menu, 2, m_maximized ? "Restore" : "Maximize"); + m_window_menu_maximize_item = maximize_item.ptr(); + m_window_menu->add_item(move(maximize_item)); + m_window_menu->add_item(make(*m_window_menu, MenuItem::Type::Separator)); - m_window_menu->add_item(make(*m_window_menu, 3, "Close")); + + auto close_item = make(*m_window_menu, 3, "Close"); + close_item->set_icon(&close_icon()); + m_window_menu->add_item(move(close_item)); m_window_menu->item((int)PopupMenuItem::Minimize).set_enabled(m_minimizable); m_window_menu->item((int)PopupMenuItem::Maximize).set_enabled(m_resizable); @@ -361,6 +402,9 @@ void Window::popup_window_menu(const Gfx::Point& position) } }; } + m_window_menu_minimize_item->set_icon(m_minimized ? nullptr : &minimize_icon()); + m_window_menu_maximize_item->set_icon(m_maximized ? &restore_icon() : &maximize_icon()); + m_window_menu->popup(position); } @@ -402,7 +446,7 @@ Gfx::Rect Window::tiled_rect(WindowTileType tiled) const WindowManager::the().maximized_window_rect(*this).y(), Screen::the().width() / 2 - frame_width, WindowManager::the().maximized_window_rect(*this).height()); - default : + default: ASSERT_NOT_REACHED(); } } diff --git a/Servers/WindowServer/Window.h b/Servers/WindowServer/Window.h index 31f05c76b8..ce796b602f 100644 --- a/Servers/WindowServer/Window.h +++ b/Servers/WindowServer/Window.h @@ -40,6 +40,7 @@ namespace WindowServer { class ClientConnection; class Cursor; class Menu; +class MenuItem; class MouseEvent; enum WMEventMask { @@ -269,6 +270,8 @@ private: Gfx::Rect m_unmaximized_rect; Gfx::Rect m_rect_in_menubar; RefPtr m_window_menu; + MenuItem* m_window_menu_minimize_item { nullptr }; + MenuItem* m_window_menu_maximize_item { nullptr }; int m_minimize_animation_step { -1 }; };