[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.0/kdelibs/kdeui/widgets
From:       David Faure <faure () kde ! org>
Date:       2008-06-02 13:29:45
Message-ID: 1212413385.096686.10733.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 815660 by dfaure:

Backport SVN commit 814173 by dfaure:
Fix KHistoryComboBox emitting activated twice when pressing Return (which made \
Ctrl+Return open two tabs in konq). This is because \
KHistoryComboBox::slotSimulateActivated was called before QComboBox had a chance to \
emit activated, so it didn't find the item in the list, and -thought- that QComboBox \
wouldn't emit activated...


 M  +16 -9     khistorycombobox.cpp  


--- branches/KDE/4.0/kdelibs/kdeui/widgets/khistorycombobox.cpp #815659:815660
@@ -98,11 +98,13 @@
     if ( histControl == "ignoredups" || histControl == "ignoreboth" )
         setDuplicatesEnabled( false );
 
-    connect( this, SIGNAL(aboutToShowContextMenu(QMenu*)),
-             SLOT(addContextMenuItems(QMenu*)) );
-    connect( this, SIGNAL( activated(int) ), SLOT( slotReset() ));
-    connect( this, SIGNAL( returnPressed(const QString&) ), SLOT(slotReset()));
-    connect( this, SIGNAL( returnPressed(const QString&) ), SLOT( \
slotSimulateActivated(const QString&) ) ); +    connect(this, \
SIGNAL(aboutToShowContextMenu(QMenu*)), SLOT(addContextMenuItems(QMenu*))); +    \
connect(this, SIGNAL(activated(int)), SLOT(slotReset())); +    connect(this, \
SIGNAL(returnPressed(QString)), SLOT(slotReset())); +    // We want \
slotSimulateActivated to be called _after_ QComboBoxPrivate::_q_returnPressed +    // \
otherwise there's a risk of emitting activated twice (slotSimulateActivated will find \
+    // the item, after some app's slotActivated inserted the item into the combo). + \
connect(this, SIGNAL(returnPressed(QString)), SLOT(slotSimulateActivated(QString)), \
Qt::QueuedConnection);  }
 
 KHistoryComboBox::~KHistoryComboBox()
@@ -314,7 +316,7 @@
         }
         else { // bottom of history
             if ( d->myIterateIndex == -2 ) {
-                KNotification::event( KNotification::Notification , 
+                KNotification::event( KNotification::Notification ,
                                       i18n("No further item in the history."),
                                        QPixmap() , this);
             }
@@ -417,13 +419,18 @@
     /* With the insertion policy NoInsert, which we use by default,
        Qt doesn't emit activated on typed text if the item is not already there,
        which is perhaps reasonable. Generate the signal ourselves if that's the \
case. +    */
+    if ((insertPolicy() == NoInsert && findText(text, \
Qt::MatchFixedString|Qt::MatchCaseSensitive) == -1)) { +        emit activated(text);
+    }
 
-       Qt also doesn't emit it if the box is full, and policy is not 
+    /*
+       Qt also doesn't emit it if the box is full, and policy is not
        InsertAtCurrent
     */
-    if ((insertPolicy() == NoInsert && findText(text) == -1) ||
-        (insertPolicy() != InsertAtCurrent && count() >= maxCount()))
+    else if (insertPolicy() != InsertAtCurrent && count() >= maxCount()) {
         emit activated(text);
+    }
 }
 
 KPixmapProvider *KHistoryComboBox::pixmapProvider() const


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic