xwayland: fix setting title prop (#6809)

* fix setting xwayland title prop

* add window title types
This commit is contained in:
Ikalco 2024-07-08 10:46:42 -05:00 committed by GitHub
parent 648f824b9e
commit b03f41efec
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -153,7 +153,7 @@ static bool lookupParentExists(SP<CXWaylandSurface> XSURF, SP<CXWaylandSurface>
}
void CXWM::readProp(SP<CXWaylandSurface> XSURF, uint32_t atom, xcb_get_property_reply_t* reply) {
std::string propName = "?";
std::string propName = std::format("{}?", atom);
for (auto& ha : HYPRATOMS) {
if (ha.second != atom)
continue;
@ -172,8 +172,10 @@ void CXWM::readProp(SP<CXWaylandSurface> XSURF, uint32_t atom, xcb_get_property_
XSURF->state.appid.pop_back();
XSURF->events.metadataChanged.emit();
} else if (atom == XCB_ATOM_WM_NAME || atom == HYPRATOMS["_NET_WM_NAME"]) {
size_t len = xcb_get_property_value_length(reply);
char* string = (char*)xcb_get_property_value(reply);
size_t len = xcb_get_property_value_length(reply);
char* string = (char*)xcb_get_property_value(reply);
if (reply->type != HYPRATOMS["UTF8_STRING"] && reply->type != HYPRATOMS["TEXT"] && reply->type != XCB_ATOM_STRING)
return;
XSURF->state.title = std::string{string, len};
XSURF->events.metadataChanged.emit();
} else if (atom == HYPRATOMS["_NET_WM_WINDOW_TYPE"]) {
@ -520,7 +522,7 @@ bool CXWM::handleSelectionPropertyNotify(xcb_property_notify_event_t* e) {
// Debug::log(ERR, "[xwm] FIXME: CXWM::handleSelectionPropertyNotify stub");
return true;
return false;
}
void CXWM::handleSelectionRequest(xcb_selection_request_event_t* e) {