aboutsummaryrefslogtreecommitdiff
path: root/src/platform/gui/xcb/UiApplication.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-09-11 22:19:32 +0800
committerYuqian Yang <crupest@crupest.life>2025-09-11 22:19:32 +0800
commit4122cffc95a05ecc2a136ce30bf64f3492812443 (patch)
tree4f26067f8b7303447dcc1506c45fdc99f8489d72 /src/platform/gui/xcb/UiApplication.cpp
parentfe6e1686ce484cb0dd9a69f130e82f647c30016f (diff)
downloadcru-4122cffc95a05ecc2a136ce30bf64f3492812443.tar.gz
cru-4122cffc95a05ecc2a136ce30bf64f3492812443.tar.bz2
cru-4122cffc95a05ecc2a136ce30bf64f3492812443.zip
xcb window style flag.
Diffstat (limited to 'src/platform/gui/xcb/UiApplication.cpp')
-rw-r--r--src/platform/gui/xcb/UiApplication.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/platform/gui/xcb/UiApplication.cpp b/src/platform/gui/xcb/UiApplication.cpp
index 462e2fde..2fceac30 100644
--- a/src/platform/gui/xcb/UiApplication.cpp
+++ b/src/platform/gui/xcb/UiApplication.cpp
@@ -49,6 +49,32 @@ xcb_connection_t *XcbUiApplication::GetXcbConnection() {
xcb_screen_t *XcbUiApplication::GetFirstXcbScreen() { return screen_; }
+xcb_atom_t XcbUiApplication::GetOrCreateXcbAtom(std::string name) {
+ auto iter = xcb_atom_.find(name);
+ if (iter != xcb_atom_.cend()) {
+ return iter->second;
+ }
+
+ auto cookie =
+ xcb_intern_atom(xcb_connection_, false, name.size(), name.data());
+ auto reply = xcb_intern_atom_reply(xcb_connection_, cookie, nullptr);
+ auto atom = reply->atom;
+ xcb_atom_.emplace(std::move(name), atom);
+ return atom;
+}
+
+xcb_atom_t XcbUiApplication::GetXcbAtom_NET_WM_WINDOW_TYPE() {
+ return GetOrCreateXcbAtom("_NET_WM_WINDOW_TYPE");
+}
+
+xcb_atom_t XcbUiApplication::GetXcbAtom_NET_WM_WINDOW_TYPE_NORMAL() {
+ return GetOrCreateXcbAtom("_NET_WM_WINDOW_TYPE_NORMAL");
+}
+
+xcb_atom_t XcbUiApplication::GetXcbAtom_NET_WM_WINDOW_TYPE_UTILITY() {
+ return GetOrCreateXcbAtom("_NET_WM_WINDOW_TYPE_UTILITY");
+}
+
int XcbUiApplication::Run() {
auto exit_code = event_loop_.Run();