[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