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

List:       kde-commits
Subject:    branches/KDE/4.2/kdepim/akregator/src
From:       Frank Osterfeld <frank.osterfeld () kdemail ! net>
Date:       2009-03-25 10:41:41
Message-ID: 1237977701.657393.25446.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 944228 by osterfeld:

backport: 
CCBUG: 171615

r944038 | osterfeld | 2009-03-24 21:45:04 +0000 (Tue, 24 Mar 2009) | 2 lines

actually use frame var

------------------------------------------------------------------------
r944029 | osterfeld | 2009-03-24 21:32:52 +0000 (Tue, 24 Mar 2009) | 4 lines

Fix tab-related shortcuts, including Alt+W
Issue spotted by Haakon Nilsen



 M  +18 -18    tabwidget.cpp  


--- branches/KDE/4.2/kdepim/akregator/src/tabwidget.cpp #944227:944228
@@ -56,6 +56,7 @@
 #include "framemanager.h"
 #include "kernel.h"
 #include "openurlrequest.h"
+#include "utils/temporaryvalue.h"
 
 #include <cassert>
 
@@ -67,7 +68,7 @@
     TabWidget* const q;
 
 public:
-    explicit Private( TabWidget * qq ) : q( qq ) {}
+    explicit Private( TabWidget * qq ) : q( qq ), currentMaxLength( 30 ), currentItem( 0 ) {}
 
     TabWidget* parent;
     QHash<QWidget*, Frame*> frames;
@@ -76,6 +77,10 @@
     QWidget* currentItem;
     QToolButton* tabsClose;
 
+    QWidget* selectedWidget() const {
+        return ( currentItem && q->indexOf(currentItem) != -1 ) ? currentItem : q->currentWidget();
+    }
+
     uint tabBarWidthForMaxChars(int maxLength);
     void setTitle(const QString &title , QWidget* sender);
     void updateTabBarVisibility();
@@ -91,8 +96,6 @@
     :KTabWidget(parent), d(new Private( this ) )
 {
     d->parent = this;
-    d->currentMaxLength = 30;
-    d->currentItem = 0;
     setMinimumSize(250,150);
     setTabReorderingEnabled(false);
     connect( this, SIGNAL( currentChanged(int) ),
@@ -102,7 +105,6 @@
     setCloseButtonEnabled(Settings::closeButtonOnTabs());
     
     d->tabsClose = new QToolButton(this);
-    d->tabsClose->setShortcut(QKeySequence("Ctrl+W"));
     connect( d->tabsClose, SIGNAL( clicked() ), this,
             SLOT( slotRemoveCurrentFrame() ) );
 
@@ -139,7 +141,7 @@
 }
 void TabWidget::slotSelectFrame(int frameId)
 {
-    Frame* frame = d->framesById[frameId];
+    Frame* frame = d->framesById.value(frameId);
     if (frame && frame != d->currentFrame())
     {
         setCurrentWidget(frame);
@@ -208,7 +210,7 @@
 {
     if (!d->framesById.contains(frameId))
         return;
-    Frame* f = d->framesById[frameId];
+    Frame* f = d->framesById.value(frameId);
     d->frames.remove(f);
     d->framesById.remove(frameId);
     removeTab(indexOf(f));
@@ -324,20 +326,18 @@
 void TabWidget::contextMenu(int i, const QPoint &p)
 {
     QWidget* w = ActionManager::getInstance()->container("tab_popup");
-    d->currentItem = widget(i);
+    TemporaryValue<QWidget*> tmp( d->currentItem, widget(i) );
     //kDebug() << indexOf(d->currentItem);
     // FIXME: do not hardcode index of maintab
     if (w && indexOf(d->currentItem) != 0)
         static_cast<QMenu *>(w)->exec(p);
-    d->currentItem = 0;
 }
 
 void TabWidget::slotDetachTab()
 {
-    if (!d->currentItem || indexOf(d->currentItem) == -1)
-        d->currentItem = currentWidget();
+    QWidget* widget = d->selectedWidget();
 
-    Frame* frame = d->frames[d->currentItem];
+    Frame* frame = d->frames.value(widget);
 
     if (frame && frame->url().isValid() && frame->isRemovable())
     {
@@ -351,9 +351,8 @@
 
 void TabWidget::slotCopyLinkAddress()
 {
-    if(!d->currentItem || indexOf(d->currentItem) == -1)
-        d->currentItem = currentWidget();
-    Frame* frame = d->frames[d->currentItem];
+    QWidget* widget = d->selectedWidget();
+    Frame* frame = d->frames.value(widget);
 
     if (frame && frame->url().isValid())
     {
@@ -366,12 +365,13 @@
 
 void TabWidget::slotCloseTab()
 {
-    if (!d->currentItem || indexOf(d->currentItem) == -1)
-        d->currentItem = currentWidget();
-    if (d->frames[d->currentItem] == 0 || !d->frames[d->currentItem]->isRemovable() )
+    QWidget* widget = d->selectedWidget();
+    Frame* frame = d->frames.value(widget);
+
+    if (frame == 0 || !frame->isRemovable() )
         return;
 
-    emit signalRemoveFrameRequest(d->frames[d->currentItem]->id());
+    emit signalRemoveFrameRequest(frame->id());
 }
 
 void TabWidget::initiateDrag(int tab)
[prev in list] [next in list] [prev in thread] [next in thread] 

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