diff --git a/src/xwayland/XWM.cpp b/src/xwayland/XWM.cpp index ebeaf505537..b55df7fcc5d 100644 --- a/src/xwayland/XWM.cpp +++ b/src/xwayland/XWM.cpp @@ -153,7 +153,7 @@ static bool lookupParentExists(SP XSURF, SP } void CXWM::readProp(SP 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 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) {