Revision: 6124
Author: ek.kato
Date: Mon Dec 21 17:44:42 2009
Log: * Merge r6123 from trunk.

http://code.google.com/p/uim/source/detail?r=6124

Modified:
 /branches/1.5/qt4/toolbar
 /branches/1.5/qt4/toolbar/CMakeLists.txt
 /branches/1.5/qt4/toolbar/applet-kde4.cpp
 /branches/1.5/qt4/toolbar/applet-kde4.h
 /branches/1.5/qt4/toolbar/common-quimhelpertoolbar.cpp
 /branches/1.5/qt4/toolbar/common-quimhelpertoolbar.h
 /branches/1.5/qt4/toolbar/common-uimstateindicator.cpp
 /branches/1.5/qt4/toolbar/common-uimstateindicator.h

=======================================
--- /branches/1.5/qt4/toolbar/CMakeLists.txt    Sat Nov 21 04:55:15 2009
+++ /branches/1.5/qt4/toolbar/CMakeLists.txt    Mon Dec 21 17:44:42 2009
@@ -3,7 +3,7 @@
 find_package(KDE4 REQUIRED)
 include(KDE4Defaults)

-add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
+add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS} -DPLASMA_APPLET_UIM)
 include_directories(${KDE4_INCLUDES}
         ${CMAKE_SOURCE_DIR}/../.. ${CMAKE_SOURCE_DIR}/../../uim
         ${CMAKE_SOURCE_DIR}/../../replace ${CMAKE_SOURCE_DIR}/..)
=======================================
--- /branches/1.5/qt4/toolbar/applet-kde4.cpp   Sat Nov 21 04:55:15 2009
+++ /branches/1.5/qt4/toolbar/applet-kde4.cpp   Mon Dec 21 17:44:42 2009
@@ -61,6 +61,8 @@
     m_toolbar->setAttribute(Qt::WA_NoSystemBackground);
     connect(m_toolbar, SIGNAL(toolbarResized()),
             this, SLOT(slotToolbarResized()));
+    connect(m_toolbar, SIGNAL(menuRequested(QMenu*)),
+            this, SLOT(slotMenuRequested(QMenu*)));

     m_proxy = new QGraphicsProxyWidget;
     m_proxy->setWidget(m_toolbar);
@@ -114,6 +116,12 @@
     tb += (top + bottom);
     resize(m_toolbar->width() + lr, m_toolbar->height() + tb);
 }
+
+void UimApplet::slotMenuRequested(QMenu *menu)
+{
+    menu->adjustSize();
+    menu->exec(popupPosition(menu->size()));
+}

 QGraphicsWidget *UimApplet::graphicsWidget()
 {
=======================================
--- /branches/1.5/qt4/toolbar/applet-kde4.h     Sat Nov 21 04:55:15 2009
+++ /branches/1.5/qt4/toolbar/applet-kde4.h     Mon Dec 21 17:44:42 2009
@@ -50,6 +50,7 @@

     private slots:
         void slotToolbarResized();
+        void slotMenuRequested(QMenu *menu);

     private:
         void initPopup();
=======================================
--- /branches/1.5/qt4/toolbar/common-quimhelpertoolbar.cpp Sat Nov 21 04:55:15 2009 +++ /branches/1.5/qt4/toolbar/common-quimhelpertoolbar.cpp Mon Dec 21 17:44:42 2009
@@ -56,7 +56,10 @@
     m_indicator = new UimStateIndicator( this );
     m_layout->addWidget( m_indicator );

- connect( m_indicator, SIGNAL( indicatorResized() ), this, SLOT( slotIndicatorResized() ) );
+    connect( m_indicator, SIGNAL( indicatorResized() ),
+        this, SLOT( slotIndicatorResized() ) );
+    connect( m_indicator, SIGNAL( menuRequested( QMenu* ) ),
+        this, SIGNAL( menuRequested( QMenu* ) ) );

     QPixmap swicon = QPixmap( ICONDIR + "/im_switcher.png" );
     QPixmap preficon = QPixmap( ACTION_ICONDIR + "/configure.png");
@@ -87,7 +90,7 @@
     exiticon = QPixmap::fromImage( exitimage.scaled( ICON_SIZE, ICON_SIZE,
         Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) );

-    m_contextMenu = new QMenu( this );
+    m_contextMenu = new QMenu( isApplet ? 0 : this );
     m_contextMenu->addAction( m_swicon, _("Switch input method"),
         this, SLOT(slotExecImSwitcher()) );
     m_contextMenu->addAction( m_preficon, _("Preference"),
@@ -129,8 +132,13 @@
 {
     if( m_contextMenu->isHidden() )
     {
+#ifdef PLASMA_APPLET_UIM
+        Q_UNUSED( e );
+        emit menuRequested( m_contextMenu );
+#else
         m_contextMenu->move( e->globalPos() );
         m_contextMenu->exec();
+#endif
     }
 }

=======================================
--- /branches/1.5/qt4/toolbar/common-quimhelpertoolbar.h Sat Nov 21 04:55:15 2009 +++ /branches/1.5/qt4/toolbar/common-quimhelpertoolbar.h Mon Dec 21 17:44:42 2009
@@ -80,6 +80,7 @@
 signals:
     void quitToolbar();
     void toolbarResized();
+    void menuRequested( QMenu *menu );

 protected:
     UimStateIndicator *m_indicator;
=======================================
--- /branches/1.5/qt4/toolbar/common-uimstateindicator.cpp Sat Nov 21 04:55:15 2009 +++ /branches/1.5/qt4/toolbar/common-uimstateindicator.cpp Mon Dec 21 17:44:42 2009
@@ -40,6 +40,7 @@
 #include <QtCore/QTextCodec>
 #include <QtGui/QHBoxLayout>
 #include <QtGui/QImage>
+#include <QtGui/QMouseEvent>
 #include <QtGui/QPixmap>

 #include <cstring>
@@ -171,11 +172,17 @@
                 button->setToolTip( fields[ 3 ] );

                 // create popup
+#ifdef PLASMA_APPLET_UIM
+                popupMenu = new QHelperPopupMenu( 0 );
+#else
                 popupMenu = new QHelperPopupMenu( button );
+#endif
                 connect( popupMenu, SIGNAL( aboutToShow() ),
                     this, SLOT( slotPopupMenuAboutToShow() ) );
                 connect( popupMenu, SIGNAL( aboutToHide() ),
                     this, SLOT( slotPopupMenuAboutToHide() ) );
+                connect( button, SIGNAL( menuRequested( QMenu* ) ),
+                    this, SIGNAL( menuRequested( QMenu* ) ) );
                 button->setMenu( popupMenu );
                 button->setPopupMode( QToolButton::InstantPopup );

@@ -262,6 +269,28 @@
         delete button;
     }
 }
+
+/**/
+QHelperToolbarButton::QHelperToolbarButton( QWidget *parent )
+    : QToolButton( parent )
+{
+    setAutoRaise( true );
+}
+
+QSize QHelperToolbarButton::sizeHint() const
+{
+    return QSize( BUTTON_SIZE, BUTTON_SIZE );
+}
+
+void QHelperToolbarButton::mousePressEvent( QMouseEvent *event )
+{
+#ifdef PLASMA_APPLET_UIM
+    if ( event->button() == Qt::LeftButton )
+        emit menuRequested( menu() );
+#else
+    QToolButton::mousePressEvent( event );
+#endif
+}

 /**/

=======================================
--- /branches/1.5/qt4/toolbar/common-uimstateindicator.h Sat Nov 21 04:55:15 2009 +++ /branches/1.5/qt4/toolbar/common-uimstateindicator.h Mon Dec 21 17:44:42 2009
@@ -70,6 +70,7 @@

 signals:
     void indicatorResized();
+    void menuRequested( QMenu *menu );

 public slots:
     void slotStdinActivated( int socket );
@@ -91,14 +92,17 @@

 class QHelperToolbarButton : public QToolButton
 {
+    Q_OBJECT
 public:
-    explicit QHelperToolbarButton( QWidget *parent = 0 )
-        : QToolButton( parent ){ setAutoRaise( true ); }
-
-    QSize sizeHint() const
-    {
-        return QSize( BUTTON_SIZE, BUTTON_SIZE );
-    }
+    explicit QHelperToolbarButton( QWidget *parent = 0 );
+
+    QSize sizeHint() const;
+
+signals:
+    void menuRequested( QMenu *menu );
+
+private:
+    void mousePressEvent( QMouseEvent *event );
 };

 class QHelperPopupMenu : public QMenu

Reply via email to