From: Dirk Rettschlag Date: Fri, 22 Jan 2010 12:30:49 +0000 (+0100) Subject: Fixed bugs in topic widget X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=6c23f5cc6fefa40c038d80f6cb90204065dba6bc Fixed bugs in topic widget --- diff --git a/src/qtui/topicwidget.cpp b/src/qtui/topicwidget.cpp index 3b025021..8ec55e4b 100644 --- a/src/qtui/topicwidget.cpp +++ b/src/qtui/topicwidget.cpp @@ -47,6 +47,7 @@ TopicWidget::TopicWidget(QWidget *parent) if(fs.value("UseCustomTopicWidgetFont", false).toBool()) setCustomFont(fs.value("TopicWidget", QFont())); + _mouseEntered = false; } void TopicWidget::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { @@ -133,6 +134,7 @@ void TopicWidget::on_topicEditButton_clicked() { void TopicWidget::switchEditable() { ui.stackedWidget->setCurrentIndex(1); ui.topicLineEdit->setFocus(); + ui.topicLineEdit->moveCursor(QTextCursor::End,QTextCursor::MoveAnchor); updateGeometry(); } @@ -144,12 +146,21 @@ void TopicWidget::switchPlain() { // filter for the input widget to switch back to normal mode bool TopicWidget::eventFilter(QObject *obj, QEvent *event) { - if(event->type() == QEvent::FocusOut) { + + if(event->type() == QEvent::FocusOut && !_mouseEntered) { switchPlain(); return true; } - - if(event->type() != QEvent::KeyPress) + + if(event->type() == QEvent::Enter) { + _mouseEntered = true; + } + + if(event->type() == QEvent::Leave) { + _mouseEntered = false; + } + + if(event->type() != QEvent::KeyRelease) return QObject::eventFilter(obj, event); QKeyEvent *keyEvent = static_cast(event); diff --git a/src/qtui/topicwidget.h b/src/qtui/topicwidget.h index 29e45c63..b8fcb420 100644 --- a/src/qtui/topicwidget.h +++ b/src/qtui/topicwidget.h @@ -54,6 +54,7 @@ private: Ui::TopicWidget ui; QString _topic; + bool _mouseEntered; };