Revision: 7175
Author:   nogu.dev
Date:     Sat Jul  2 06:47:26 2011
Log:      * qt4/immodule/candidatewindow.cpp
  - (CandidateWindow::slotHookSubwindow, CandidateWindow::moveEvent,
     CandidateWindow::resizeEvent): Use subWindowRect().
  - (CandidateWindow::subWindowRect): New.
* qt4/immodule/candidatewindow.h
  - (CandidateWindow::subWindowRect): New.
http://code.google.com/p/uim/source/detail?r=7175

Modified:
 /trunk/qt4/immodule/candidatewindow.cpp
 /trunk/qt4/immodule/candidatewindow.h

=======================================
--- /trunk/qt4/immodule/candidatewindow.cpp     Sat Jul  2 06:46:58 2011
+++ /trunk/qt4/immodule/candidatewindow.cpp     Sat Jul  2 06:47:26 2011
@@ -254,7 +254,8 @@
     QString annotationString
= annotations.at( isVertical ? list[0]->row() : list[0]->column() );
     if ( !annotationString.isEmpty() ) {
-        subWin->layoutWindow( frameGeometry(), isVertical );
+        subWin->layoutWindow( subWindowRect( frameGeometry() ),
+            isVertical );
         subWin->hookPopup( annotationString );
     }
 }
@@ -264,14 +265,16 @@
 {
     // move subwindow
     if ( subWin )
-        subWin->layoutWindow( QRect( e->pos(), size() ), isVertical );
+        subWin->layoutWindow( subWindowRect( QRect( e->pos(), size() ) ),
+            isVertical );
 }

 void CandidateWindow::resizeEvent( QResizeEvent *e )
 {
     // move subwindow
     if ( subWin )
-        subWin->layoutWindow( QRect( pos(), e->size() ), isVertical );
+        subWin->layoutWindow( subWindowRect( QRect( pos(), e->size() ) ),
+            isVertical );
 }

 void CandidateWindow::hideEvent( QHideEvent *event )
@@ -280,6 +283,28 @@
     if ( subWin )
         subWin->cancelHook();
 }
+
+QRect CandidateWindow::subWindowRect( const QRect &rect,
+    QTableWidgetItem *item )
+{
+    if ( !item ) {
+        QList<QTableWidgetItem *> list = cList->selectedItems();
+        if ( list.isEmpty() )
+            return rect;
+        item = list[0];
+    }
+    QRect r = rect;
+    if ( isVertical ) {
+        r.setY( rect.y() + cList->rowHeight( 0 ) * item->row() );
+    } else {
+        int xdiff = 0;
+        for ( int i = 0, j = item->column(); i < j; i++ ) {
+            xdiff += cList->columnWidth( i );
+        }
+        r.setX( rect.x() + xdiff );
+    }
+    return r;
+}

 QSize CandidateWindow::sizeHint() const
 {
=======================================
--- /trunk/qt4/immodule/candidatewindow.h       Sun Jun 26 09:02:00 2011
+++ /trunk/qt4/immodule/candidatewindow.h       Sat Jul  2 06:47:26 2011
@@ -68,6 +68,8 @@
     virtual void resizeEvent( QResizeEvent * );
     virtual void hideEvent( QHideEvent *event );

+    QRect subWindowRect( const QRect &rect, QTableWidgetItem *item = 0 );
+
     // widgets
     CandidateListView *cList;
     SubWindow *subWin;

Reply via email to