aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/gui
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/platform/gui')
-rw-r--r--include/cru/platform/gui/xcb/UiApplication.h1
-rw-r--r--include/cru/platform/gui/xcb/Window.h15
2 files changed, 9 insertions, 7 deletions
diff --git a/include/cru/platform/gui/xcb/UiApplication.h b/include/cru/platform/gui/xcb/UiApplication.h
index 6063a8ab..591ac33f 100644
--- a/include/cru/platform/gui/xcb/UiApplication.h
+++ b/include/cru/platform/gui/xcb/UiApplication.h
@@ -41,6 +41,7 @@ class XcbUiApplication : public XcbResource, public virtual IUiApplication {
CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM(_NET_WM_WINDOW_TYPE)
CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM(_NET_WM_WINDOW_TYPE_NORMAL)
CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM(_NET_WM_WINDOW_TYPE_UTILITY)
+ CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM(_NET_FRAME_EXTENTS)
#undef CRU_XCB_UI_APPLICATION_DEFINE_XCB_ATOM
diff --git a/include/cru/platform/gui/xcb/Window.h b/include/cru/platform/gui/xcb/Window.h
index 927c3db9..ba4798a5 100644
--- a/include/cru/platform/gui/xcb/Window.h
+++ b/include/cru/platform/gui/xcb/Window.h
@@ -1,5 +1,6 @@
#pragma once
+#include "../../GraphicsBase.h"
#include "../Window.h"
#include "Base.h"
@@ -38,13 +39,8 @@ class XcbWindow : public XcbResource, public virtual INativeWindow {
Rect GetClientRect() override;
void SetClientRect(const Rect& rect) override;
- // Get the rect of the window containing frame.
- // The lefttop of the rect is relative to screen lefttop.
- virtual Rect GetWindowRect() = 0;
-
- // Set the rect of the window containing frame.
- // The lefttop of the rect is relative to screen lefttop.
- virtual void SetWindowRect(const Rect& rect) = 0;
+ Rect GetWindowRect() override;
+ void SetWindowRect(const Rect& rect) override;
virtual bool RequestFocus() = 0;
@@ -98,6 +94,11 @@ class XcbWindow : public XcbResource, public virtual INativeWindow {
std::uint32_t length,
std::uint32_t* out_length = nullptr);
+ // Relative to screen lefttop.
+ Point GetXcbWindowPosition(xcb_window_t window);
+
+ std::optional<Thickness> Get_NET_FRAME_EXTENTS(xcb_window_t window);
+
private:
XcbUiApplication* application_;
std::optional<xcb_window_t> xcb_window_;