--------------Boundary-00=_7D1JROGHM9ACUGW9643I Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8bit Content-Disposition: inline Hi Bernd pointed me to a compatibility issue with my new auto updating "Show Toolbar" menu. I'm attaching a small compatibility patch, which removes my action automatically, if an application uses the KStdAction::showToolbar(.....) functions with the mainwindows actioncollection. Does someone see a problem with that patch ? It should be binary and source compatible and solve problems with old applications using eg: KStdAction::configureToolbars(parent, SLOT(mySlot()), actionCollection) ->setToolTip("mytooltip") I'll adapt kdelibs/kdebase/.. than not to use the KStdAction::ShowToolbar functions. At the moment they use them, although they are just ignored. (without the patch) Kind regards Joseph Wenninger --------------Boundary-00=_7D1JROGHM9ACUGW9643I Content-Type: text/x-diff; charset="us-ascii"; name="jw_patch2.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="jw_patch2.diff" ? jw_patch2.diff Index: kaction.cpp =================================================================== RCS file: /home/kde/kdelibs/kdeui/kaction.cpp,v retrieving revision 1.275 diff -u -3 -p -r1.275 kaction.cpp --- kaction.cpp 2002/06/17 10:10:35 1.275 +++ kaction.cpp 2002/06/30 14:00:38 @@ -3189,6 +3189,7 @@ public: m_highlight = false; m_currentHighlightAction = 0; m_statusCleared = true; + m_mw=0; } KInstance *m_instance; @@ -3203,12 +3204,13 @@ public: KAccel *m_kaccel; QWidget *m_builderWidget; KAccel *m_builderKAccel; - + QAsciiDict m_actionDict; QPtrDict< QPtrList > m_dctHighlightContainers; bool m_highlight; KAction *m_currentHighlightAction; bool m_statusCleared; + KMainWindow *m_mw; }; KActionCollection::KActionCollection( QWidget *parent, const char *name, @@ -3223,6 +3225,7 @@ KActionCollection::KActionCollection( QW setInstance( instance ); } + KActionCollection::KActionCollection( QWidget *watch, QObject* parent, const char *name, KInstance *instance ) : QObject( parent, name ) @@ -3272,6 +3275,10 @@ KActionCollection::~KActionCollection() delete d->m_builderKAccel; delete d; d = 0; } + +void KActionCollection::setMainActionCollectionFor(KMainWindow *w){d->m_mw=w;} +KMainWindow *KActionCollection::mainActionCollectionFor(){return d->m_mw;} + void KActionCollection::setWidget( QWidget* w ) { Index: kaction.h =================================================================== RCS file: /home/kde/kdelibs/kdeui/kaction.h,v retrieving revision 1.154 diff -u -3 -p -r1.154 kaction.h --- kaction.h 2002/06/09 20:22:06 1.154 +++ kaction.h 2002/06/30 14:00:41 @@ -1905,6 +1905,12 @@ protected: private: class KActionCollectionPrivate; KActionCollectionPrivate *d; + +protected: + friend class KMainWindow; + void setMainActionCollectionFor(KMainWindow *); +public: + KMainWindow *mainActionCollectionFor(); }; #endif Index: kmainwindow.cpp =================================================================== RCS file: /home/kde/kdelibs/kdeui/kmainwindow.cpp,v retrieving revision 1.77 diff -u -3 -p -r1.77 kmainwindow.cpp --- kmainwindow.cpp 2002/06/29 05:45:15 1.77 +++ kmainwindow.cpp 2002/06/30 14:00:43 @@ -163,6 +163,11 @@ KMainWindow::KMainWindow( QWidget* paren initKMainWindow(createToolbarAction,name); } +void KMainWindow::removeToolBarMenuAction() +{ + delete d->toolbarMenu; + d->toolbarMenu=0; +} void KMainWindow::initKMainWindow(bool createToolbarAction,const char *name) { @@ -173,6 +178,7 @@ void KMainWindow::initKMainWindow(bool c mHelpMenu = 0; kapp->setTopWidget( this ); actionCollection()->setWidget( this ); + actionCollection()->setMainActionCollectionFor(this); connect(kapp, SIGNAL(shutDown()), this, SLOT(shuttingDown())); if( !memberList ) memberList = new QPtrList; Index: kmainwindow.h =================================================================== RCS file: /home/kde/kdelibs/kdeui/kmainwindow.h,v retrieving revision 1.50 diff -u -3 -p -r1.50 kmainwindow.h --- kmainwindow.h 2002/06/24 23:01:58 1.50 +++ kmainwindow.h 2002/06/30 14:00:43 @@ -502,7 +502,7 @@ public slots: * Returns a pointer to the mainwindows action responsible for the toolbars menu */ KToolBarMenuAction *toolBarMenuAction(); - + void removeToolBarMenuAction(); protected: void paintEvent( QPaintEvent* e ); void childEvent( QChildEvent* e); Index: kstdaction.cpp =================================================================== RCS file: /home/kde/kdelibs/kdeui/kstdaction.cpp,v retrieving revision 1.72 diff -u -3 -p -r1.72 kstdaction.cpp --- kstdaction.cpp 2002/06/27 19:53:05 1.72 +++ kstdaction.cpp 2002/06/30 14:00:43 @@ -29,6 +29,7 @@ #include #include #include +#include namespace KStdAction { @@ -97,7 +98,7 @@ const KStdActionInfo g_rgActionInfo[] = { Spelling, KStdAccel::AccelNone, "tools_spelling", I18N_NOOP("&Spelling..."), 0, "spellcheck" }, { ShowMenubar, KStdAccel::ShowMenubar, "options_show_menubar", I18N_NOOP("Show &Menubar"), 0, "showmenu" }, - { ShowToolbar, KStdAccel::AccelNone, "options_show_toolbar_old", I18N_NOOP("Show &Toolbar"), 0, 0 }, + { ShowToolbar, KStdAccel::AccelNone, "options_show_toolbar", I18N_NOOP("Show &Toolbar"), 0, 0 }, { ShowStatusbar, KStdAccel::AccelNone, "options_show_statusbar", I18N_NOOP("Show St&atusbar"), 0, 0 }, { SaveOptions, KStdAccel::AccelNone, "options_save_options", I18N_NOOP("&Save Settings"), 0, 0 }, { KeyBindings, KStdAccel::AccelNone, "options_configure_keybinding", I18N_NOOP("Configure S&hortcuts..."), 0,"configure_shortcuts" }, @@ -281,6 +282,11 @@ KToggleAction *showMenubar( const QObjec KToggleAction *showToolbar( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) { KToggleAction *ret; + if ((!name) && (parent->mainActionCollectionFor())) + { + parent->mainActionCollectionFor()->removeToolBarMenuAction(); + } + ret = new KToggleAction(i18n("Show &Toolbar"), 0, recvr, slot, parent, name ? name : stdName(ShowToolbar)); ret->setChecked(true); @@ -290,6 +296,10 @@ KToggleAction *showToolbar( const QObjec KToggleToolBarAction *showToolbar( const char* toolBarName, KActionCollection* parent, const char *name ) { + if ((!name) && (parent->mainActionCollectionFor())) + { + parent->mainActionCollectionFor()->removeToolBarMenuAction(); + } KToggleToolBarAction *ret; ret = new KToggleToolBarAction(toolBarName, i18n("Show &Toolbar"), parent, name ? name : stdName(ShowToolbar)); Index: kstdaction.h =================================================================== RCS file: /home/kde/kdelibs/kdeui/kstdaction.h,v retrieving revision 1.25 diff -u -3 -p -r1.25 kstdaction.h --- kstdaction.h 2002/05/29 20:48:46 1.25 +++ kstdaction.h 2002/06/30 14:00:43 @@ -448,11 +448,13 @@ namespace KStdAction KActionCollection* parent, const char *name = 0 ); /** + * @obsolete. toolbar actions are created automatically now in the Settings menu. Don't use this anymore * Show/Hide the primary toolbar. */ KToggleAction *showToolbar(const QObject *recvr, const char *slot, KActionCollection* parent, const char *name = 0 ); /** + * @obsolete. toolbar actions are created automatically now in the Settings menu. Don't use this anymore * Show/Hide the primary toolbar. */ KToggleToolBarAction *showToolbar(const char* toolBarName, --------------Boundary-00=_7D1JROGHM9ACUGW9643I-- >> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<