1/*
2 This file is part of the KDE libraries
3 SPDX-FileCopyrightText: 1999 Reginald Stadlbauer <reggie@kde.org>
4 SPDX-FileCopyrightText: 1999 Simon Hausmann <hausmann@kde.org>
5 SPDX-FileCopyrightText: 2000 Nicolas Hadacek <haadcek@kde.org>
6 SPDX-FileCopyrightText: 2000 Kurt Granroth <granroth@kde.org>
7 SPDX-FileCopyrightText: 2000 Michael Koch <koch@kde.org>
8 SPDX-FileCopyrightText: 2001 Holger Freyther <freyther@kde.org>
9 SPDX-FileCopyrightText: 2002 Ellis Whitehead <ellis@kde.org>
10 SPDX-FileCopyrightText: 2002 Joseph Wenninger <jowenn@kde.org>
11 SPDX-FileCopyrightText: 2005-2006 Hamish Rodda <rodda@kde.org>
12
13 SPDX-License-Identifier: LGPL-2.0-only
14*/
15
16#include <QAction>
17#include <QShortcutEvent>
18
19#include <KLocalizedString>
20#include <KMessageBox>
21
22class KActionConflictDetector : public QObject
23{
24 Q_OBJECT
25public:
26 explicit KActionConflictDetector(QObject *parent = nullptr)
27 : QObject(parent)
28 {
29 }
30
31 bool eventFilter(QObject *watched, QEvent *event) override
32 {
33 if (event->type() == QEvent::Shortcut && qobject_cast<QAction *>(object: watched)) {
34 QShortcutEvent *se = static_cast<QShortcutEvent *>(event);
35 if (se->isAmbiguous()) {
36 KMessageBox::information(parent: nullptr, // No widget to be seen around here
37 i18n("The key sequence '%1' is ambiguous. Use 'Configure Keyboard Shortcuts'\n"
38 "from the 'Settings' menu to solve the ambiguity.\n"
39 "No action will be triggered.",
40 se->key().toString(QKeySequence::NativeText)),
41 i18nc("@title:window", "Ambiguous shortcut detected"));
42 return true;
43 }
44 }
45
46 return QObject::eventFilter(watched, event);
47 }
48};
49

source code of kxmlgui/src/kactionconflictdetector_p.h