[PATCH] KToolBarMenuAction fix for single toolbar
Nadeem Hasan
nhasan at nadmm.com
Wed May 29 04:21:14 BST 2002
Hi,
The following patch fixes a problem with toolbar show/hide menu generation
with KToolBarMenuAction when the KMainWindow has only one toolbar (e.g.
konsole).
The "Show..." item was always stuck at its initial state as the
KToggleAction::plug() was not called for the menu as can be seen below.
Thanks a lot to David Faure for giving me a hand initially.
OK to commit?
Cheers,
--
Nadeem Hasan
nhasan at nadmm.com
http://www.nadmm.com/
Index: kaction.cpp
===================================================================
RCS file: /home/kde/kdelibs/kdeui/kaction.cpp,v
retrieving revision 1.268
diff -u -r1.268 kaction.cpp
--- kaction.cpp 2002/05/26 17:07:07 1.268
+++ kaction.cpp 2002/05/29 03:01:35
@@ -2732,8 +2732,7 @@
public:
KMainWindow *window;
QMap<KToolBar*, KToggleToolBarAction*> toolbarActionMap;
- KPopupMenu *popup;
-
+ KPopupMenu *popup;
};
KToolBarMenuAction::KToolBarMenuAction( KMainWindow* parent,
@@ -2741,7 +2740,7 @@
{
d=new KToolBarMenuActionPrivate;
d->window=parent;
- d->popup = new
KPopupMenu(parent,"KToolBarMenuAction::KToolBarMenuAction"); +
d->popup = new KPopupMenu(parent,"KToolBarMenuAction::KToolBarMenuAction");
}
KToolBarMenuAction::~KToolBarMenuAction()
@@ -2762,14 +2761,13 @@
void KToolBarMenuAction::addToolbar(KToolBar *bar)
{
- bool oldcount=d->toolbarActionMap.count();
+ uint oldcount=d->toolbarActionMap.count();
KToggleToolBarAction *act;
d->toolbarActionMap.insert(bar,act=new KToggleToolBarAction(
bar->name(), i18n("Show %1").arg(bar->label()),
0, 0));
if (oldcount==0)
{
- setText(i18n("Show
%1").arg(d->toolbarActionMap.begin().key()->label())); act->plug(d->popup);
for (int i=0;i<containerCount();i++)
{
@@ -2828,14 +2826,16 @@
{
QPopupMenu* menu = static_cast<QPopupMenu*>( widget );
int id;
- if (d->toolbarActionMap.count()>1)
- id = menu->insertItem( text(), d->popup, -1, index );
+
+ if (d->toolbarActionMap.count()>1)
+ id = menu->insertItem( text(), d->popup, -1, index );
else
if (d->toolbarActionMap.count()==1)
{
- id=menu->insertItem(text(),-1,index);
-
menu->setItemChecked(id,d->toolbarActionMap.begin().data()->isChecked()); -
menu->connectItem(id,d->toolbarActionMap.begin().data(),SLOT(slotActivated()
)); + KToggleToolBarAction *action =
d->toolbarActionMap.begin().data(); + action->unplug( d->popup );
+ int i = action->plug( menu );
+ id = action->itemId( i );
}
else
{
Index: ktoolbar.cpp
===================================================================
RCS file: /home/kde/kdelibs/kdeui/ktoolbar.cpp,v
retrieving revision 1.316
diff -u -r1.316 ktoolbar.cpp
--- ktoolbar.cpp 2002/05/28 03:00:01 1.316
+++ ktoolbar.cpp 2002/05/29 03:01:37
@@ -1840,7 +1840,7 @@
return context;
// construct our context popup menu
- context = new KPopupMenu( 0, "context" );
+ context = new KPopupMenu( this, "context" );
context->insertTitle(i18n("Toolbar Menu"));
KPopupMenu *orient = new KPopupMenu( context, "orient" );
-------------------------------------------------------
--
Nadeem Hasan
nhasan at nadmm.com
http://www.nadmm.com/
More information about the kde-core-devel
mailing list