35ea75e9c2
This workaround was only applied for Qt < 5.12 and is no longer needed now that support for Qt < 5.15 has been dropped in commitafb4c96d27
Author: Michael Weghorn <m.weghorn@posteo.de> Date: Thu Aug 3 21:30:22 2023 +0200 qt: Drop code for Qt < 5.15 Commit originally adding the workaround: commitfe2baf9e84
Author: Jan-Marek Glogowski <jan-marek.glogowski@extern.cib.de> Date: Tue Dec 3 08:32:58 2019 +0100 Qt5 fix missing XCB_ICCCM_WM_HINT_WINDOW_GROUP This is the application level equivalent of the Qt5 fix for bug QTBUG-46626 / commit 0de4b32 ("xcb: fix issue with dialogs hidden by other windows"), which was broken since Qt 5.4 and is just fixed since Qt 5.12. It is needed for some window managers, which don't know about the WM_CLIENT_LEADER property. Both settings are the same, but just the latter is set by older Qt5 releases. This probably isn't a real problem, as GNOME or XFCE would use the gtk VCL plugin, but since I already wrote the code when debugging tdf#129071, there is also no reason to drop it (except: more code, more bugs...). This fix is optional and needs development headers for xcb-icccm, which can actually be compiled into Qt5. If missing configure will just print a warning, since it's a runtime requirement and we explicitly drop the linked Qt version symbol, so the potential build Qt version won't matter. Change-Id: Ifc5a8f8a40ee13779a911efb53e8b8b868614d0b Reviewed-on: https://gerrit.libreoffice.org/84299 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de> Change-Id: I56b708449cf686f787f55256c76673be604d31e4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158102 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
48 lines
1.6 KiB
C++
48 lines
1.6 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
#include <QtX11Support.hxx>
|
|
|
|
#include <config_vclplug.h>
|
|
|
|
#include <QtCore/QVersionNumber>
|
|
|
|
#include <QtInstance.hxx>
|
|
#include <QtTools.hxx>
|
|
|
|
#if CHECK_QT5_USING_X11
|
|
#include <QtX11Extras/QX11Info>
|
|
#endif
|
|
|
|
#include <unx/gensys.h>
|
|
|
|
void QtX11Support::setApplicationID(const xcb_window_t nWinId, std::u16string_view rWMClass)
|
|
{
|
|
#if CHECK_QT5_USING_X11
|
|
OString aResClass = OUStringToOString(rWMClass, RTL_TEXTENCODING_ASCII_US);
|
|
const char* pResClass
|
|
= !aResClass.isEmpty() ? aResClass.getStr() : SalGenericSystem::getFrameClassName();
|
|
OString aResName = SalGenericSystem::getFrameResName();
|
|
|
|
// the WM_CLASS data consists of two concatenated cstrings, including the terminating '\0' chars
|
|
const uint32_t data_len = aResName.getLength() + 1 + strlen(pResClass) + 1;
|
|
char* data = new char[data_len];
|
|
memcpy(data, aResName.getStr(), aResName.getLength() + 1);
|
|
memcpy(data + aResName.getLength() + 1, pResClass, strlen(pResClass) + 1);
|
|
|
|
xcb_change_property(QX11Info::connection(), XCB_PROP_MODE_REPLACE, nWinId, XCB_ATOM_WM_CLASS,
|
|
XCB_ATOM_STRING, 8, data_len, data);
|
|
delete[] data;
|
|
#else
|
|
Q_UNUSED(nWinId);
|
|
Q_UNUSED(rWMClass);
|
|
#endif
|
|
}
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|