[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdeedu/kig/modes
From: Maurizio Paolini <paolini () dmf ! unicatt ! it>
Date: 2009-11-05 14:25:09
Message-ID: 1257431109.714205.28746.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1045233 by paolini:
bug fix: duplicate triggering of action at top level in object context menu
M +16 -9 popup.cc
--- trunk/KDE/kdeedu/kig/modes/popup.cc #1045232:1045233
@@ -272,6 +272,7 @@
KIconLoader* l = part.iconLoader();
for ( uint i = 0; i < NumberOfMenus; ++i )
{
+ if ( i == ToplevelMenu ) continue;
mmenus[i] = new QMenu( this );
if ( !menunames[i].isEmpty() )
mmenus[i]->setTitle( menunames[i] );
@@ -280,6 +281,13 @@
mmenus[i]->setIcon( KIcon( menuicons[i], l ) );
}
}
+ mmenus[ToplevelMenu] = this;
+ /*
+ * mp: previously ToplevelMenu was treated like a submenu (of itself).
+ * unfortunately this had as side effect a duplicated triggering of its
+ * actions with unpredictable consequences. In this way the addAction
+ * in addInternalAction directly adds the action at toplevel.
+ */
connect( this, SIGNAL( triggered( QAction* ) ),
this, SLOT( toplevelMenuSlot( QAction* ) ) );
@@ -290,13 +298,15 @@
for ( uint j = 0; j < mproviders.size(); ++j )
mproviders[j]->fillUpMenu( *this, i, nextfree );
};
+ QAction* firstrealaction = actions()[1];
for ( int i = 0; i < NumberOfMenus; ++i )
{
+ if ( i == ToplevelMenu ) continue;
if ( mmenus[i]->actions().count() == 0 ) continue;
- if ( i == ToplevelMenu ) continue;
- addMenu( mmenus[i] );
+ //addMenu( mmenus[i] );
+ insertMenu( firstrealaction, mmenus[i] );
};
- addActions( mmenus[ToplevelMenu]->actions() );
+ // addActions( mmenus[ToplevelMenu]->actions() );
}
void NormalModePopupObjects::toplevelMenuSlot( QAction* act )
@@ -768,24 +778,21 @@
QAction* NormalModePopupObjects::addInternalAction( int menu, const QIcon& icon, \
const QString& name, int id ) {
//kDebug() << "ID: " << id;
- QMenu* m = mmenus[menu];
- QAction* newaction = m->addAction( icon, name );
+ QAction* newaction = mmenus[menu]->addAction( icon, name );
newaction->setData( QVariant::fromValue( ( menu << 8 ) | id ) );
return newaction;
}
QAction* NormalModePopupObjects::addInternalAction( int menu, const QString& name, \
int id ) {
- QMenu* m = mmenus[menu];
- QAction* newaction = m->addAction( name );
+ QAction* newaction = mmenus[menu]->addAction( name );
newaction->setData( QVariant::fromValue( ( menu << 8 ) | id ) );
return newaction;
}
QAction* NormalModePopupObjects::addInternalAction( int menu, QAction* act )
{
- QMenu* m = mmenus[menu];
- m->addAction( act );
+ mmenus[menu]->addAction( act );
return act;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic