aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/xwayland/XWM.cpp34
-rw-r--r--src/xwayland/XWM.hpp1
2 files changed, 25 insertions, 10 deletions
diff --git a/src/xwayland/XWM.cpp b/src/xwayland/XWM.cpp
index b5762762..cb4d8f4d 100644
--- a/src/xwayland/XWM.cpp
+++ b/src/xwayland/XWM.cpp
@@ -158,19 +158,33 @@ static bool lookupParentExists(SP<CXWaylandSurface> XSURF, SP<CXWaylandSurface>
return false;
}
-void CXWM::readProp(SP<CXWaylandSurface> XSURF, uint32_t atom, xcb_get_property_reply_t* reply) {
- std::string propName;
- if (Debug::trace) {
- propName = std::format("{}?", atom);
- for (auto const& ha : HYPRATOMS) {
- if (ha.second != atom)
- continue;
+std::string CXWM::getAtomName(uint32_t atom) {
+ for (auto const& ha : HYPRATOMS) {
+ if (ha.second != atom)
+ continue;
- propName = ha.first;
- break;
- }
+ return ha.first;
}
+ // Get the name of the atom
+ auto const atom_name_cookie = xcb_get_atom_name(connection, atom);
+ auto* atom_name_reply = xcb_get_atom_name_reply(connection, atom_name_cookie, NULL);
+
+ if (!atom_name_reply)
+ return "Unknown";
+
+ auto const name_len = xcb_get_atom_name_name_length(atom_name_reply);
+ auto* name = xcb_get_atom_name_name(atom_name_reply);
+ free(atom_name_reply);
+
+ return {name, name_len};
+}
+
+void CXWM::readProp(SP<CXWaylandSurface> XSURF, uint32_t atom, xcb_get_property_reply_t* reply) {
+ std::string propName;
+ if (Debug::trace)
+ propName = getAtomName(atom);
+
if (atom == XCB_ATOM_WM_CLASS) {
size_t len = xcb_get_property_value_length(reply);
char* string = (char*)xcb_get_property_value(reply);
diff --git a/src/xwayland/XWM.hpp b/src/xwayland/XWM.hpp
index 7d6b63ed..59695720 100644
--- a/src/xwayland/XWM.hpp
+++ b/src/xwayland/XWM.hpp
@@ -119,6 +119,7 @@ class CXWM {
std::string mimeFromAtom(xcb_atom_t atom);
void setClipboardToWayland(SXSelection& sel);
void getTransferData(SXSelection& sel);
+ std::string getAtomName(uint32_t atom);
void readProp(SP<CXWaylandSurface> XSURF, uint32_t atom, xcb_get_property_reply_t* reply);
//