summaryrefslogtreecommitdiff
path: root/LibGUI
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-04-10 14:29:47 +0200
committerAndreas Kling <awesomekling@gmail.com>2019-04-10 14:29:47 +0200
commitd4818dd2dd21aa9189bb0ee87aff2660b1e22951 (patch)
tree643bb48aa5da1f24d320795d89a69cb7b072de74 /LibGUI
parent30e2d62c38b30e7023269b5334c7dd101610ca7f (diff)
downloadserenity-d4818dd2dd21aa9189bb0ee87aff2660b1e22951.zip
WindowServer: Give windows a "background color" to use for missing parts.
When resizing a window, we often end up having to paint some part of it without coverage in the current backing store. This patch makes those cases look nicer by having a fallback background color for each window, passed along with the CreateWindow client message.
Diffstat (limited to 'LibGUI')
-rw-r--r--LibGUI/GWindow.cpp1
-rw-r--r--LibGUI/GWindow.h4
2 files changed, 5 insertions, 0 deletions
diff --git a/LibGUI/GWindow.cpp b/LibGUI/GWindow.cpp
index 72a5b2fb16..59c5710cca 100644
--- a/LibGUI/GWindow.cpp
+++ b/LibGUI/GWindow.cpp
@@ -62,6 +62,7 @@ void GWindow::show()
request.window.modal = m_modal;
request.window.resizable = m_resizable;
request.window.opacity = m_opacity_when_windowless;
+ request.window.background_color = m_background_color.value();
request.window.size_increment = m_size_increment;
request.window.base_size = m_base_size;
request.window.type = (WSAPI_WindowType)m_window_type;
diff --git a/LibGUI/GWindow.h b/LibGUI/GWindow.h
index 9504c32dc9..e7d8371059 100644
--- a/LibGUI/GWindow.h
+++ b/LibGUI/GWindow.h
@@ -38,6 +38,9 @@ public:
String title() const;
void set_title(const String&);
+ Color background_color() const { return m_background_color; }
+ void set_background_color(Color color) { m_background_color = color; }
+
int x() const { return rect().x(); }
int y() const { return rect().y(); }
int width() const { return rect().width(); }
@@ -123,6 +126,7 @@ private:
Vector<Rect> m_pending_paint_event_rects;
Size m_size_increment;
Size m_base_size;
+ Color m_background_color { Color::LightGray };
GWindowType m_window_type { GWindowType::Normal };
bool m_is_active { false };
bool m_should_exit_app_on_close { false };