diff --git a/qt4/immodule/candidatewindow.cpp b/qt4/immodule/candidatewindow.cpp index 0ed8996..467c71b 100644 --- a/qt4/immodule/candidatewindow.cpp +++ b/qt4/immodule/candidatewindow.cpp @@ -113,6 +113,7 @@ CandidateWindow::~CandidateWindow() void CandidateWindow::popup() { + QApplication::focusWidget()->window()->installEventFilter( this ); raise(); show(); } @@ -509,6 +510,16 @@ QSize CandidateWindow::sizeHint() const return QSize( width, height ); } +bool CandidateWindow::eventFilter( QObject *obj, QEvent *event ) +{ + Q_UNUSED( obj ) + if ( event->type() == QEvent::Move ) { + QMoveEvent *moveEvent = static_cast( event ); + move( pos() + moveEvent->pos() - moveEvent->oldPos() ); + } + return false; +} + QSize CandidateListView::sizeHint() const { // frame width diff --git a/qt4/immodule/candidatewindow.h b/qt4/immodule/candidatewindow.h index 54b5f19..89e1682 100644 --- a/qt4/immodule/candidatewindow.h +++ b/qt4/immodule/candidatewindow.h @@ -89,6 +89,8 @@ protected: virtual void moveEvent( QMoveEvent * ); virtual void resizeEvent( QResizeEvent * ); + bool eventFilter( QObject *obj, QEvent *event ); + QUimInputContext *ic; CandidateListView *cList;