mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-17 05:25:58 +01:00
xwm: read atom name from xcb (#7546)
expand the debug trace logging by actually reading the atom name from xcb if not found in HYPRATOMS, will also print the proper atom for xcb internal ones and not just the HYPRATOMS ones.
This commit is contained in:
parent
a6315b0af4
commit
4af9410dc2
2 changed files with 25 additions and 10 deletions
|
@ -158,18 +158,32 @@ static bool lookupParentExists(SP<CXWaylandSurface> XSURF, SP<CXWaylandSurface>
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string CXWM::getAtomName(uint32_t atom) {
|
||||||
|
for (auto const& ha : HYPRATOMS) {
|
||||||
|
if (ha.second != atom)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
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) {
|
void CXWM::readProp(SP<CXWaylandSurface> XSURF, uint32_t atom, xcb_get_property_reply_t* reply) {
|
||||||
std::string propName;
|
std::string propName;
|
||||||
if (Debug::trace) {
|
if (Debug::trace)
|
||||||
propName = std::format("{}?", atom);
|
propName = getAtomName(atom);
|
||||||
for (auto const& ha : HYPRATOMS) {
|
|
||||||
if (ha.second != atom)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
propName = ha.first;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (atom == XCB_ATOM_WM_CLASS) {
|
if (atom == XCB_ATOM_WM_CLASS) {
|
||||||
size_t len = xcb_get_property_value_length(reply);
|
size_t len = xcb_get_property_value_length(reply);
|
||||||
|
|
|
@ -119,6 +119,7 @@ class CXWM {
|
||||||
std::string mimeFromAtom(xcb_atom_t atom);
|
std::string mimeFromAtom(xcb_atom_t atom);
|
||||||
void setClipboardToWayland(SXSelection& sel);
|
void setClipboardToWayland(SXSelection& sel);
|
||||||
void getTransferData(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);
|
void readProp(SP<CXWaylandSurface> XSURF, uint32_t atom, xcb_get_property_reply_t* reply);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue