Dim disabled items in context menus (#4423)

This commit is contained in:
nerix 2023-04-29 18:50:13 +02:00 committed by GitHub
parent caaa0d91f6
commit 642718474c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 40 additions and 11 deletions

View file

@ -27,6 +27,7 @@
- Bugfix: Fixed emote & badge tooltips not showing up when thumbnails were hidden. (#4509)
- Bugfix: Fixed links with invalid IPv4 addresses being parsed. (#4576)
- Bugfix: Fixed Icon reverting to default when application is open. (#4577)
- Bugfix: Fixed disabled items in context-menus having a weird text-effect or the default text color. (#4423)
- Dev: Disabling precompiled headers on Windows is now tested in CI. (#4472)
- Dev: Themes are now stored as JSON files in `resources/themes`. (#4471, #4533)
- Dev: Ignore unhandled BTTV user-events. (#4438)

View file

@ -66,3 +66,14 @@ chatterino--NavigationLabel {
font-size: 15px;
color: #A6DDF4;
}
QMenu {
background: #242424;
border: #555555;
color: #ffffff;
selection-background-color: #555555;
}
QMenu::item:disabled {
color: #8c7f7f;
}

View file

@ -212,6 +212,14 @@ void Theme::parseFrom(const QJsonObject &root)
(this->isLightTheme() ? "#68B1FF"
: this->tabs.selected.backgrounds.regular.name());
this->window.contextMenuStyleSheet =
QStringLiteral("QMenu { background: %1; border: %2; color: %3; "
"selection-background-color: %2; } "
"QMenu::item:disabled { color: #8c7f7f; }")
.arg(splits.input.background.name(QColor::HexArgb),
tabs.selected.backgrounds.regular.name(QColor::HexArgb),
tabs.selected.text.name(QColor::HexArgb));
// Usercard buttons
if (this->isLightTheme())
{

View file

@ -39,6 +39,8 @@ public:
struct {
QColor background;
QColor text;
QString contextMenuStyleSheet;
} window;
/// TABS

View file

@ -292,6 +292,11 @@ bool BaseWindow::supportsCustomWindowFrame()
void BaseWindow::themeChangedEvent()
{
if (!this->flags_.has(BaseWindow::DisableStyleSheet))
{
this->setStyleSheet(this->theme->window.contextMenuStyleSheet);
}
if (this->hasCustomWindowFrame())
{
QPalette palette;

View file

@ -24,16 +24,17 @@ class BaseWindow : public BaseWidget
Q_OBJECT
public:
enum Flags {
enum Flags : uint32_t {
None = 0,
EnableCustomFrame = 1,
Frameless = 2,
TopMost = 4,
DisableCustomScaling = 8,
FramelessDraggable = 16,
DontFocus = 32,
Dialog = 64,
DisableLayoutSave = 128,
Frameless = (1 << 1),
TopMost = (1 << 2),
DisableCustomScaling = (1 << 3),
FramelessDraggable = (1 << 4),
DontFocus = (1 << 5),
Dialog = (1 << 6),
DisableLayoutSave = (1 << 7),
DisableStyleSheet = (1 << 8),
};
enum ActionOnFocusLoss { Nothing, Delete, Close, Hide };

View file

@ -29,9 +29,10 @@
namespace chatterino {
SettingsDialog::SettingsDialog(QWidget *parent)
: BaseWindow({BaseWindow::Flags::DisableCustomScaling,
BaseWindow::Flags::Dialog, BaseWindow::DisableLayoutSave},
parent)
: BaseWindow(
{BaseWindow::Flags::DisableCustomScaling, BaseWindow::Flags::Dialog,
BaseWindow::DisableLayoutSave, BaseWindow::DisableStyleSheet},
parent)
{
this->setObjectName("SettingsDialog");
this->setWindowTitle("Chatterino Settings");