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;