Make columns menu for msg view non closable.

This commit is contained in:
Martin Rotter 2020-11-03 20:44:41 +01:00
parent 429b2bf16d
commit 582c5bc675
5 changed files with 19 additions and 10 deletions

View File

@ -50,7 +50,7 @@ void LabelsMenu::keyPressEvent(QKeyEvent* event) {
LabelAction* act = qobject_cast<LabelAction*>(activeAction()); LabelAction* act = qobject_cast<LabelAction*>(activeAction());
if (act != nullptr && event->key() == Qt::Key::Key_Space) { if (act != nullptr && event->key() == Qt::Key::Key_Space) {
act->toggle(); act->toggleCheckState();
} }
NonClosableMenu::keyPressEvent(event); NonClosableMenu::keyPressEvent(event);
@ -60,10 +60,11 @@ void LabelsMenu::mousePressEvent(QMouseEvent* event) {
LabelAction* act = qobject_cast<LabelAction*>(activeAction()); LabelAction* act = qobject_cast<LabelAction*>(activeAction());
if (act != nullptr) { if (act != nullptr) {
act->toggle(); act->toggleCheckState();
} }
else {
NonClosableMenu::mousePressEvent(event); NonClosableMenu::mousePressEvent(event);
}
} }
void LabelsMenu::changeLabelAssignment(Qt::CheckState state) { void LabelsMenu::changeLabelAssignment(Qt::CheckState state) {
@ -121,7 +122,7 @@ Label* LabelAction::label() const {
return m_label; return m_label;
} }
void LabelAction::toggle() { void LabelAction::toggleCheckState() {
if (m_checkState == Qt::CheckState::Unchecked) { if (m_checkState == Qt::CheckState::Unchecked) {
setCheckState(Qt::CheckState::Checked); setCheckState(Qt::CheckState::Checked);
} }

View File

@ -42,7 +42,7 @@ class LabelAction : public QAction {
Label* label() const; Label* label() const;
public slots: public slots:
void toggle(); void toggleCheckState();
signals: signals:
void checkStateChanged(Qt::CheckState state); void checkStateChanged(Qt::CheckState state);

View File

@ -15,7 +15,14 @@ void NonClosableMenu::keyPressEvent(QKeyEvent* event) {
} }
void NonClosableMenu::mousePressEvent(QMouseEvent* event) { void NonClosableMenu::mousePressEvent(QMouseEvent* event) {
Q_UNUSED(event) auto* act = dynamic_cast<QAction*>(activeAction());
if (act != nullptr) {
act->toggle();
}
else {
QMenu::mousePressEvent(event);
}
} }
void NonClosableMenu::mouseReleaseEvent(QMouseEvent* event) { void NonClosableMenu::mouseReleaseEvent(QMouseEvent* event) {

View File

@ -4,7 +4,7 @@
#include <QHeaderView> #include <QHeaderView>
TreeViewColumnsMenu::TreeViewColumnsMenu(QHeaderView* parent) : QMenu(parent) { TreeViewColumnsMenu::TreeViewColumnsMenu(QHeaderView* parent) : NonClosableMenu(parent) {
connect(this, &TreeViewColumnsMenu::aboutToShow, this, &TreeViewColumnsMenu::prepareMenu); connect(this, &TreeViewColumnsMenu::aboutToShow, this, &TreeViewColumnsMenu::prepareMenu);
} }
@ -17,6 +17,7 @@ void TreeViewColumnsMenu::prepareMenu() {
act->setData(i); act->setData(i);
act->setCheckable(true); act->setCheckable(true);
act->setChecked(!header_view->isSectionHidden(i)); act->setChecked(!header_view->isSectionHidden(i));
connect(act, &QAction::toggled, this, &TreeViewColumnsMenu::actionTriggered); connect(act, &QAction::toggled, this, &TreeViewColumnsMenu::actionTriggered);
} }
} }

View File

@ -3,11 +3,11 @@
#ifndef TREEVIEWCOLUMNSMENU_H #ifndef TREEVIEWCOLUMNSMENU_H
#define TREEVIEWCOLUMNSMENU_H #define TREEVIEWCOLUMNSMENU_H
#include <QMenu> #include "gui/nonclosablemenu.h"
class QHeaderView; class QHeaderView;
class TreeViewColumnsMenu : public QMenu { class TreeViewColumnsMenu : public NonClosableMenu {
public: public:
explicit TreeViewColumnsMenu(QHeaderView* parent); explicit TreeViewColumnsMenu(QHeaderView* parent);