Krita Source Code Documentation
Loading...
Searching...
No Matches
ktoggletoolbaraction.cpp
Go to the documentation of this file.
1/* This file is part of the KDE libraries
2 SPDX-FileCopyrightText: 1999 Reginald Stadlbauer <reggie@kde.org>
3 SPDX-FileCopyrightText: 1999 Simon Hausmann <hausmann@kde.org>
4 SPDX-FileCopyrightText: 2000 Nicolas Hadacek <haadcek@kde.org>
5 SPDX-FileCopyrightText: 2000 Kurt Granroth <granroth@kde.org>
6 SPDX-FileCopyrightText: 2000 Michael Koch <koch@kde.org>
7 SPDX-FileCopyrightText: 2001 Holger Freyther <freyther@kde.org>
8 SPDX-FileCopyrightText: 2002 Ellis Whitehead <ellis@kde.org>
9 SPDX-FileCopyrightText: 2002 Joseph Wenninger <jowenn@kde.org>
10 SPDX-FileCopyrightText: 2003 Andras Mantia <amantia@kde.org>
11 SPDX-FileCopyrightText: 2005-2006 Hamish Rodda <rodda@kde.org>
12
13 SPDX-License-Identifier: LGPL-2.0-only
14*/
15
17
18#include <QByteArray>
19#include <QEvent>
20#include <QPointer>
21
22#include <klocalizedstring.h>
23
24#include "kmainwindow.h"
25#include "ktoolbar.h"
26
28{
29public:
31 : toolBarName(0), toolBar(0), beingToggled(false)
32 {
33 }
34
35 QByteArray toolBarName;
38};
39
40KToggleToolBarAction::KToggleToolBarAction(const char *toolBarName, const QString &text, QObject *parent)
41 : KToggleAction(text, parent),
42 d(new Private)
43{
44 d->toolBarName = toolBarName;
45}
46
47KToggleToolBarAction::KToggleToolBarAction(KisToolBar *toolBar, const QString &text, QObject *parent)
48 : KToggleAction(text, parent),
49 d(new Private)
50{
51 d->toolBar = toolBar;
52 d->toolBar->installEventFilter(this);
53
54 d->beingToggled = true;
55 setChecked(d->toolBar->isVisible());
56 d->beingToggled = false;
57}
58
63
64bool KToggleToolBarAction::eventFilter(QObject *watched, QEvent *event)
65{
66 if (d->beingToggled) {
67 return false;
68 }
69
70 d->beingToggled = true;
71
72 if (watched == d->toolBar) {
73 switch (event->type()) {
74 case QEvent::Hide:
75 if (isChecked()) {
76 setChecked(false);
77 }
78 break;
79
80 case QEvent::Show:
81 if (!isChecked()) {
82 setChecked(true);
83 }
84 break;
85
86 default:
87 break;
88 }
89 }
90
91 d->beingToggled = false;
92
93 return false;
94}
95
100
102{
103 if (!d->beingToggled && d->toolBar && checked != d->toolBar->isVisible()) {
104 d->beingToggled = true;
105 d->toolBar->setVisible(checked);
106 d->beingToggled = false;
107
108 QMainWindow *mw = d->toolBar->mainWindow();
109 if (mw && qobject_cast<KisKMainWindow *>(mw)) {
110 static_cast<KisKMainWindow *>(mw)->setSettingsDirty();
111 }
112 }
113
114 KToggleAction::slotToggled(checked);
115}
116
void slotToggled(bool checked) override
bool eventFilter(QObject *watched, QEvent *event) override
KToggleToolBarAction(const char *toolBarName, const QString &text, QObject *parent)
KDE top level main window
Definition kmainwindow.h:89
Floatable toolbar with auto resize.
Definition ktoolbar.h:47