From 4ab504c99479b6141b4c0d1ef9ff5255daace413 Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Thu, 11 Jan 2024 14:41:00 +0200 Subject: [PATCH] Add Window::captionNormalChanged() This signal notifies when the client specified caption changes, not when kwin changes it because it changed the suffix, etc. --- src/internalwindow.cpp | 1 + src/waylandwindow.cpp | 6 ++++++ src/window.h | 1 + src/x11window.cpp | 7 +++---- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/internalwindow.cpp b/src/internalwindow.cpp index 66b3e10516..da6e7e2ee3 100644 --- a/src/internalwindow.cpp +++ b/src/internalwindow.cpp @@ -476,6 +476,7 @@ void InternalWindow::setCaption(const QString &caption) const QString oldCaptionSuffix = m_captionSuffix; updateCaption(); + Q_EMIT captionNormalChanged(); if (m_captionSuffix == oldCaptionSuffix) { Q_EMIT captionChanged(); } diff --git a/src/waylandwindow.cpp b/src/waylandwindow.cpp index 71cb05a837..d05016fb2b 100644 --- a/src/waylandwindow.cpp +++ b/src/waylandwindow.cpp @@ -204,9 +204,15 @@ void WaylandWindow::updateCaption() void WaylandWindow::setCaption(const QString &caption) { + const QString oldNormal = m_captionNormal; const QString oldSuffix = m_captionSuffix; + m_captionNormal = caption.simplified(); updateCaption(); + + if (m_captionNormal != oldNormal) { + Q_EMIT captionNormalChanged(); + } if (m_captionSuffix == oldSuffix) { // Don't emit caption change twice it already got emitted by the changing suffix. Q_EMIT captionChanged(); diff --git a/src/window.h b/src/window.h index 60c6acce34..38200f7c23 100644 --- a/src/window.h +++ b/src/window.h @@ -1410,6 +1410,7 @@ Q_SIGNALS: void paletteChanged(const QPalette &p); void colorSchemeChanged(); void captionChanged(); + void captionNormalChanged(); void maximizedAboutToChange(MaximizeMode mode); void maximizedChanged(); void transientChanged(); diff --git a/src/x11window.cpp b/src/x11window.cpp index 69d52e6cec..b782cd479d 100644 --- a/src/x11window.cpp +++ b/src/x11window.cpp @@ -2329,10 +2329,6 @@ void X11Window::setCaption(const QString &_s, bool force) return; } cap_normal = s; - if (!force && !changed) { - Q_EMIT captionChanged(); - return; - } bool reset_name = force; bool was_suffix = (!cap_suffix.isEmpty()); @@ -2363,6 +2359,9 @@ void X11Window::setCaption(const QString &_s, bool force) info->setVisibleIconName(QString(cap_iconic + cap_suffix).toUtf8().constData()); } + if (changed) { + Q_EMIT captionNormalChanged(); + } Q_EMIT captionChanged(); }