office-gobmx/vcl/qt5/QtX11Support.cxx
Michael Weghorn 35ea75e9c2 qt: Drop now obsolete workaround for Qt < 5.12
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

    commit afb4c96d27
    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:

    commit fe2baf9e84
    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>
2023-10-18 11:00:12 +02:00

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: */