Version: (using KDE KDE 3.4.90) Installed from: Compiled From Sources Well, as the subject says, I have the "Terminal Sessions" menu button on my panel and since some recent update (I might have been even the update from 3.4 branch to 3.5 branch) the menu simply doesn't show up anymore when clicked on. Not sure what other information might be helpful here, ther is no console output or anything. I'm using 3.5 branch SVN from a few days ago.
I can confirm this, at least since revision 440440.
it works here. there WERE two different konsole buttons for a period of time in svn due to someone committing a second one for goodness knows why. i ended up merging the functionality of both into the older one and removing the neewer one. are you certain that you are not trying to use this newer button, which no longer exists? e.g. you may have a stale .desktop file around?
On Monday 26 September 2005 16:50, Aaron J.Seigo wrote: > it works here. there WERE two different konsole buttons for a period of > time in svn due to someone committing a second one for goodness knows why. > i ended up merging the functionality of both into the older one and > removing the neewer one. are you certain that you are not trying to use > this newer button, which no longer exists? e.g. you may have a stale > .desktop file around? Hmm, how can I find out? Does it have a special name? I looked at it, but can't find anything suspicious. I have just a ./kde3/kickermenu_konsole.so and a ./apps/kicker/menuext/konsolemenu.desktop with 'X-KDE-Library=kickermenu_konsole'. I also did a clean build of kicker and tried it with a fresh ~/.kde dir. So if anything is wrong it has to be in /opt/kde3, but as I said I couldn't find anything.
hum.. can you run kicker from a konsole and see if there are any errors about unresolved symbols or not finding the library printed out? you'll need debug turned on to see any of that, of course.
On Monday 26 September 2005 21:13, Aaron J.Seigo wrote: > hum.. can you run kicker from a konsole and see if there are any errors > about unresolved symbols or not finding the library printed out? you'll > need debug turned on to see any of that, of course. hmm, now that's weird, when I start up KDE the menu doesn't work. However, when I terminate kicker and start it manually from the konsole it does! And the log doen't show any errors. Or do I have to --enable-debug? I have just no --disable-debug, to keep the console output.
I can reproduce that too: if I kill kicker and restart it from konsole, the menu works. If I kill it again and then start over with "kdeinit_wrapper kicker", it doesn't work anymore. I do not see any Undefined symbol or other errors in Kicker's startup in either session. However, I can confirm that kickermenu_konsole.so is NOT loaded when kicker is started by kdeinit, but is when started on a shell.
SVN commit 464351 by aseigo: use the macros, that's what they're there for. now it loads properly. you'll need to restart kdeinit (or just log out and in) to see this fix (simply `make install`ing then `kdeinit_wrapper kicker` won't do) thanks to Michael Reiher and Thiago Macieira for the excellent bug reporting and hunting =) BUG:113347 M +2 -23 konsole_mnu.cpp M +2 -10 konsole_mnu.h --- branches/KDE/3.5/kdebase/kicker/menuext/konsole/konsole_mnu.cpp #464350:464351 @@ -42,16 +42,9 @@ #include "konsole_mnu.h" -extern "C" -{ - KDE_EXPORT void* init_kickermenu_konsole() - { - KGlobal::locale()->insertCatalogue("libkickermenu_konsole"); - return new KonsoleMenuFactory; - } -} +K_EXPORT_KICKER_MENUEXT(konsole, KonsoleMenu) -KonsoleMenu::KonsoleMenu(QWidget *parent, const char *name) +KonsoleMenu::KonsoleMenu(QWidget *parent, const char *name, const QStringList& /* args */) : KPanelMenu("", parent, name), m_profileMenu(0), m_bookmarksSession(0), @@ -318,18 +311,4 @@ } -//***************************************************************** - -KonsoleMenuFactory::KonsoleMenuFactory(QObject *parent, const char *name) -: KLibFactory(parent, name) -{ - KGlobal::iconLoader()->addAppDir("konsole"); - KGlobal::locale()->insertCatalogue("konsolemenuapplet"); -} - -QObject* KonsoleMenuFactory::createObject(QObject *parent, const char *name, const char*, const QStringList&) -{ - return new KonsoleMenu((QWidget*)parent, name); -} - #include "konsole_mnu.moc" --- branches/KDE/3.5/kdebase/kicker/menuext/konsole/konsole_mnu.h #464350:464351 @@ -38,7 +38,7 @@ Q_OBJECT public: - KonsoleMenu(QWidget *parent = 0, const char *name = 0); + KonsoleMenu(QWidget *parent, const char *name, const QStringList& /* args */); ~KonsoleMenu(); KURL baseURL() const; @@ -61,13 +61,5 @@ KonsoleBookmarkHandler *m_bookmarkHandlerSession; }; -class KonsoleMenuFactory : public KLibFactory -{ -public: - KonsoleMenuFactory(QObject *parent = 0, const char *name = 0); - -protected: - QObject* createObject(QObject *parent = 0, const char *name = 0, const char *classname = "QObject", const QStringList& args = QStringList()); -}; - #endif +
Even though I don't understand the fix, it works. Thanks Aaron.
Hmm, I wish I could say the same. I have the update, and I did a clean rebuild of kicker, but still no konsole menu (still only with manualy starting kicker). Strange... On Tuesday 27 September 2005 03:23, Thiago Macieira wrote: > Even though I don't understand the fix, it works. Thanks Aaron.
Michael: did you either restart kdeinit or log out/in of kde?
*** Bug 108478 has been marked as a duplicate of this bug. ***
Yes, did that. Also killing kicker and starting it with kdeinit_wrapper works. Don't know whether that also worked before your patch or not, though. I also noticed that when I remove the LD_BIND_NOW=true from startkde it works right after KDE startup. I wanted to run kicker through strace when started during KDE startup, just I don't really have a clue how to do that, as I don't know how kicker is actually started:) If you have anything else I might try, just tell me.
Is it ok, if I reopen this report? Or what else can I do to find out why it doesn't work right after KDE startup? I mean, basically the menu works fine, when starting kicker manually, with or without kdeinit_wrapper. It also works when removing LD_BIND_NOW=true from startkde. It just doesn't after normal KDE startup. Greets Michael
Aaron, any ideas? I can't confirm anymore...
hm.. something to do with LD_BIND_NOW? interesting. i used to be able to duplicate as well, but now can't.. hum... will look into it further i guess...
I can vouch(?) for this aswell....i was wondering where the menu went to today, so searched for a bug and found this. Doing 'dcop kicker kicker quit' caused the panel to crash and restart (i guess just quitting would be nicer though :) and after the restart i had the menu back.
Aaron, I can confirm this too. It's the same build that I confirmed to be working in comments #8 and #14. I guess I had restarted kdeinit then, so LD_BIND_NOW wasn't set. Restarting kicker from the minicli as "kicker" makes the problem disapper, but "kdeinit_wrapper kicker" doesn't work. AFAIU, they should be the same -- minicli should find the .desktop and fork from kdeinit instead.
well, seeing as i can't repro anymore, i would suggest one of you fine folk take a look at it *smiles*
Ok, I'll take a look, hopefully this weekend. I'll have to rebuild the whole of KDE, so let's hope the rainy weather keeps the temperature down enough so that the processor won't overheat and I won't want to go outside :-)
*** Bug 114601 has been marked as a duplicate of this bug. ***
Tonight I built a kde 3.5_beta2 with Gentoo, but still the Konsole sessions menu applet button is dead. I can depress it (it draws smaller while I click on it), but no menu appears. I have to kill kicker manually and restart it to get it working.
I can add, that also the Terminal Sessions submenu from the K-menu, if enabled, does not show up in the K-menu unless I kill kicker and restart it manually.
I experience this bug still in 3.5.0-RC1.
SVN commit 480740 by aseigo: well looky here, a spare slot that wasn't implemented BUG:113347 M +0 -1 konsole_mnu.h --- branches/KDE/3.5/kdebase/kicker/menuext/konsole/konsole_mnu.h #480739:480740 @@ -48,7 +48,6 @@ void launchProfile(int id); void initialize(); void newSession(const QString& sURL, const QString& title); - void makeGUI(); private: