Prechádzať zdrojové kódy

LibGUI: Add getter/setter for GUI::Window modified state

This state lives in WindowServer and has no local copy in the client
process for now. This may turn out to be a performance issue, and if
it does we can easily cache it.
Andreas Kling 4 rokov pred
rodič
commit
2fa765bbd5

+ 14 - 0
Userland/Libraries/LibGUI/Window.cpp

@@ -1084,4 +1084,18 @@ void Window::set_menubar(RefPtr<Menubar> menubar)
     }
     }
 }
 }
 
 
+bool Window::is_modified() const
+{
+    if (!m_window_id)
+        return false;
+    return WindowServerConnection::the().send_sync<Messages::WindowServer::IsWindowModified>(m_window_id)->modified();
+}
+
+void Window::set_modified(bool modified)
+{
+    if (!m_window_id)
+        return;
+    WindowServerConnection::the().post_message(Messages::WindowServer::SetWindowModified(m_window_id, modified));
+}
+
 }
 }

+ 4 - 1
Userland/Libraries/LibGUI/Window.h

@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
  *
  *
  * SPDX-License-Identifier: BSD-2-Clause
  * SPDX-License-Identifier: BSD-2-Clause
  */
  */
@@ -29,6 +29,9 @@ public:
 
 
     static Window* from_window_id(int);
     static Window* from_window_id(int);
 
 
+    bool is_modified() const;
+    void set_modified(bool);
+
     bool is_modal() const { return m_modal; }
     bool is_modal() const { return m_modal; }
     void set_modal(bool);
     void set_modal(bool);