mudlet/src/dlgSystemMessageArea.cpp
Vadim Peretokin 453b726896
fix: script editor's info banner no longer glares in dark mode (#9414)
#### Brief overview of PR changes/additions
- the editor's info/intro banner had a hardcoded bright-yellow
background; it now styles itself per theme (muted dark amber in dark
mode, unchanged in light mode) and follows live theme switches
- the banner's links used 'color: inherit', which Qt rich text renders
as black; they now use an explicit theme-appropriate colour so they are
readable in dark mode

#### Motivation for adding to Mudlet
The bright yellow banner was glaring against the dark editor, and its
links were unreadable once the background went dark.

#### Other info (issues closed, discussion etc)
Fixes #8854.

**Test case:** enable dark mode, open the script editor with nothing
selected - the info banner is muted dark amber with readable light text
and links; in light mode it looks exactly as before.



https://github.com/user-attachments/assets/5368705f-9759-4ea6-87d5-55ee23eb54c8

---------

Signed-off-by: Vadim Peretokin <vadim.peretokin@mudlet.org>
2026-07-19 10:14:56 +02:00

67 lines
3.4 KiB
C++

/***************************************************************************
* Copyright (C) 2008-2009 by Heiko Koehn - KoehnHeiko@googlemail.com *
* Copyright (C) 2014 by Ahmed Charles - acharles@outlook.com *
* Copyright (C) 2020 by Stephen Lyons - slysven@virginmedia.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "dlgSystemMessageArea.h"
#include "mudlet.h"
dlgSystemMessageArea::dlgSystemMessageArea(QWidget* pParentWidget)
: QWidget(pParentWidget)
{
// init generated dialog
setupUi(this);
QPixmap holdPixmap;
holdPixmap = notificationAreaIconLabelWarning->pixmap(Qt::ReturnByValue);
holdPixmap.setDevicePixelRatio(5.3);
notificationAreaIconLabelWarning->setPixmap(holdPixmap);
holdPixmap = notificationAreaIconLabelError->pixmap(Qt::ReturnByValue);
holdPixmap.setDevicePixelRatio(5.3);
notificationAreaIconLabelError->setPixmap(holdPixmap);
holdPixmap = notificationAreaIconLabelInformation->pixmap(Qt::ReturnByValue);
holdPixmap.setDevicePixelRatio(5.3);
notificationAreaIconLabelInformation->setPixmap(holdPixmap);
slot_applyAppearance();
connect(mudlet::self(), &mudlet::signal_appearanceChanged, this, &dlgSystemMessageArea::slot_applyAppearance);
}
void dlgSystemMessageArea::slot_applyAppearance()
{
const bool darkMode = mudlet::self()->inDarkMode();
const QString background = darkMode ? qsl("rgb(64, 60, 40)") : qsl("rgb(255, 254, 215)");
const QString textColor = darkMode ? qsl("rgb(230, 230, 230)") : qsl("black");
frame_notificationArea->setStyleSheet(qsl("QFrame#frame_notificationArea {\n"
" border: 3px solid;\n"
" border-radius: 6px;\n"
" background-color: %1;\n"
"}\n"
"\n"
"QLabel{\n"
"color: %2;\n"
"background-color: %1;\n"
"}")
.arg(background, textColor));
}