Added ability to set text color of action menu item via QAction.
This commit is contained in:
parent
c035b78f87
commit
8d181e53c5
3 changed files with 20 additions and 2 deletions
|
|
@ -105,7 +105,13 @@ void Action::paint(Painter &p) {
|
|||
if (const auto icon = (selected ? _iconOver : _icon)) {
|
||||
icon->paint(p, _st.itemIconPosition, width());
|
||||
}
|
||||
p.setPen(selected ? _st.itemFgOver : (enabled ? _st.itemFg : _st.itemFgDisabled));
|
||||
p.setPen(_fgOverride
|
||||
? QPen(*_fgOverride)
|
||||
: selected
|
||||
? _st.itemFgOver
|
||||
: enabled
|
||||
? _st.itemFg
|
||||
: _st.itemFgDisabled);
|
||||
paintText(p);
|
||||
if (hasSubmenu()) {
|
||||
const auto left = width() - _st.itemPadding.right() - _st.arrow.width();
|
||||
|
|
@ -168,6 +174,14 @@ void Action::processAction() {
|
|||
_shortcut = actionShortcut;
|
||||
setMinWidth(w);
|
||||
update();
|
||||
|
||||
// TODO better way.
|
||||
if (const auto variant = _action->data(); variant.isValid()) {
|
||||
const auto overrideColor = variant.value<QColor>();
|
||||
if (overrideColor.isValid()) {
|
||||
_fgOverride = overrideColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool Action::isEnabled() const {
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ private:
|
|||
const style::icon *_iconOver;
|
||||
// std::unique_ptr<ToggleView> _toggle;
|
||||
int _textWidth = 0;
|
||||
std::optional<QColor> _fgOverride;
|
||||
const int _height;
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
//
|
||||
#include "ui/widgets/menu/menu_common.h"
|
||||
|
||||
#include "ui/ui_utility.h"
|
||||
|
||||
#include <QAction>
|
||||
|
||||
namespace Ui::Menu {
|
||||
|
|
@ -14,7 +16,8 @@ not_null<QAction*> CreateAction(
|
|||
QWidget *parent,
|
||||
const QString &text,
|
||||
Fn<void()> &&callback) {
|
||||
const auto action = new QAction(text, parent);
|
||||
const auto action = Ui::CreateChild<QAction>(parent);
|
||||
action->setText(text);
|
||||
parent->connect(
|
||||
action,
|
||||
&QAction::triggered,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue