We'd like to use Ctrl+R and possibly others for actions, but KTextEdit
eats it (without using it, in fact). So now we check the application shortcuts
and prevent them from being used by KTextEdit if we have them defined.
#include <QMessageBox>
#include <QScrollBar>
#include <QMessageBox>
#include <QScrollBar>
+#include "actioncollection.h"
#include "bufferview.h"
#include "graphicalui.h"
#include "multilineedit.h"
#include "bufferview.h"
#include "graphicalui.h"
#include "multilineedit.h"
const int leftMargin = 3;
MultiLineEdit::MultiLineEdit(QWidget *parent)
const int leftMargin = 3;
MultiLineEdit::MultiLineEdit(QWidget *parent)
- :
-#ifdef HAVE_KDE
- KTextEdit(parent),
-#else
- QTextEdit(parent),
-#endif
+ : MultiLineEditParent(parent),
_idx(0),
_mode(SingleLine),
_singleLine(true),
_idx(0),
_mode(SingleLine),
_singleLine(true),
+bool MultiLineEdit::event(QEvent *e) {
+ // We need to make sure that global shortcuts aren't eaten
+ if(e->type() == QEvent::ShortcutOverride) {
+ QKeyEvent* event = static_cast<QKeyEvent *>(e);
+ QKeySequence key = QKeySequence(event->key() | event->modifiers());
+ foreach(QAction *action, GraphicalUi::actionCollection()->actions()) {
+ if(action->shortcuts().contains(key)) {
+ e->ignore();
+ return false;
+ }
+ }
+ }
+
+ return MultiLineEditParent::event(e);
+}
+
void MultiLineEdit::keyPressEvent(QKeyEvent *event) {
// Workaround the fact that Qt < 4.5 doesn't know InsertLineSeparator yet
#if QT_VERSION >= 0x040500
void MultiLineEdit::keyPressEvent(QKeyEvent *event) {
// Workaround the fact that Qt < 4.5 doesn't know InsertLineSeparator yet
#if QT_VERSION >= 0x040500
on_returnPressed();
return;
}
on_returnPressed();
return;
}
-#ifdef HAVE_KDE
- KTextEdit::keyPressEvent(event);
-#else
- QTextEdit::keyPressEvent(event);
-#endif
+ MultiLineEditParent::keyPressEvent(event);
#include <QKeyEvent>
#include <QHash>
#include <QKeyEvent>
#include <QHash>
#ifdef HAVE_KDE
# include <KDE/KTextEdit>
#ifdef HAVE_KDE
# include <KDE/KTextEdit>
+# define MultiLineEditParent KTextEdit
+#else
+# include <QTextEdit>
+# define MultiLineEditParent QTextEdit
#endif
class QKeyEvent;
class TabCompleter;
#endif
class QKeyEvent;
class TabCompleter;
-class MultiLineEdit : public
-#ifdef HAVE_KDE
- KTextEdit
-#else
- QTextEdit
-#endif
-{
+class MultiLineEdit : public MultiLineEditParent {
void noTextEntered();
protected:
void noTextEntered();
protected:
+ virtual bool event(QEvent *e);
virtual void keyPressEvent(QKeyEvent * event);
virtual void resizeEvent(QResizeEvent *event);
virtual void keyPressEvent(QKeyEvent * event);
virtual void resizeEvent(QResizeEvent *event);