-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Friday 27 December 2002 17:00, Thomas Reitelbach wrote:
> On Friday 27 December 2002 16:42, Martin Ehmke wrote:
> > Hi,
> >
> > I dont know, what goes wrong, but I only can use keyboard shortcuts (e.g.
> > ALT-o) to go online if I use the "basic" skin. When an other skin is
> > selected, its like I press only "a", to go to the next person with Nick
> > starting with "a".
> > Is it a bug or what I'm doing wrong?
>
> These shortcuts are only available when the skin has the setting
> "frame.hasMenuBar = 1".
> I'm sure this can be made a better way. I'll have a look at it soon to fix
> this bug.

So here it comes... :-)

the attached patch fixes the problem with not working shortcuts with some
skins.
For those interested in the technical details: As i assumed all skins without
a real menubar do not receive the specified menu-accelator keys from the
menu. My patch fixes this issue by using a QAccel whitch does not only affect
menubars but is instead globally available.

I wish everyone a happy new year :-)
Thomas

- --
Q:      How does a hacker fix a function which
        doesn't work for all of the elements in its domain?
A:      He changes the domain.


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE+DtRi+83LmoKU5MARAjsuAKCyZj4opK32m76ArIxyhBLj6uW0tQCbB82G
m3CGvIZxyvXm5b+yBYQtLDc=
=U9TP
-----END PGP SIGNATURE-----
Index: licq/plugins/qt-gui/src/mainwin.cpp
===================================================================
RCS file: /cvsroot/licq/qt-gui/src/mainwin.cpp,v
retrieving revision 1.262
diff -u -3 -p -r1.262 mainwin.cpp
--- licq/plugins/qt-gui/src/mainwin.cpp	17 Dec 2002 01:30:58 -0000	1.262
+++ licq/plugins/qt-gui/src/mainwin.cpp	29 Dec 2002 10:46:59 -0000
@@ -3149,6 +3149,21 @@ void CMainWindow::ApplyIcons(const char 
 //-----CMainWindow::initMenu--------------------------------------------------
 void CMainWindow::initMenu()
 {
+   // Skins without a menubar (frame.hasMenuBar = 0) cannot use 
+   // QMenuData accelerators, so we need a accel that is available
+   // even without a menubar:
+   QAccel *a = new QAccel(this, "CMainWindow change Status Accel");
+   a->insertItem(ALT + Key_O, ICQ_STATUS_ONLINE);
+   a->insertItem(ALT + Key_A, ICQ_STATUS_AWAY);
+   a->insertItem(ALT + Key_N, ICQ_STATUS_NA);
+   a->insertItem(ALT + Key_C, ICQ_STATUS_OCCUPIED);
+   a->insertItem(ALT + Key_D, ICQ_STATUS_DND);
+   a->insertItem(ALT + Key_H, ICQ_STATUS_FREEFORCHAT);
+   a->insertItem(ALT + Key_F, ICQ_STATUS_OFFLINE);
+   a->insertItem(ALT + Key_I, ICQ_STATUS_FxPRIVATE);
+   connect(a, SIGNAL(activated(int)), this, SLOT(changeStatusManual(int)));
+   connect(a, SIGNAL(activatedAmbiguously(int)), this, SLOT(changeStatusManual(int)));
+   
    mnuStatus = new QPopupMenu(NULL);
    mnuStatus->insertItem(pmOnline, tr("&Online"), ICQ_STATUS_ONLINE);
    mnuStatus->insertItem(pmAway, tr("&Away"), ICQ_STATUS_AWAY);
@@ -3159,14 +3174,15 @@ void CMainWindow::initMenu()
    mnuStatus->insertItem(pmOffline, tr("O&ffline"), ICQ_STATUS_OFFLINE);
    mnuStatus->insertSeparator();
    mnuStatus->insertItem(pmPrivate, tr("&Invisible"), ICQ_STATUS_FxPRIVATE);
-   mnuStatus->setAccel(ALT + Key_O, ICQ_STATUS_ONLINE);
-   mnuStatus->setAccel(ALT + Key_A, ICQ_STATUS_AWAY);
-   mnuStatus->setAccel(ALT + Key_N, ICQ_STATUS_NA);
-   mnuStatus->setAccel(ALT + Key_C, ICQ_STATUS_OCCUPIED);
-   mnuStatus->setAccel(ALT + Key_D, ICQ_STATUS_DND);
-   mnuStatus->setAccel(ALT + Key_H, ICQ_STATUS_FREEFORCHAT);
-   mnuStatus->setAccel(ALT + Key_F, ICQ_STATUS_OFFLINE);
-   mnuStatus->setAccel(ALT + Key_I, ICQ_STATUS_FxPRIVATE);
+   mnuStatus->setAccel(a->key(ICQ_STATUS_ONLINE), ICQ_STATUS_ONLINE);
+   mnuStatus->setAccel(a->key(ICQ_STATUS_AWAY), ICQ_STATUS_AWAY);
+   mnuStatus->setAccel(a->key(ICQ_STATUS_NA), ICQ_STATUS_NA);
+   mnuStatus->setAccel(a->key(ICQ_STATUS_OCCUPIED), ICQ_STATUS_OCCUPIED);
+   mnuStatus->setAccel(a->key(ICQ_STATUS_DND), ICQ_STATUS_DND);
+   mnuStatus->setAccel(a->key(ICQ_STATUS_FREEFORCHAT), ICQ_STATUS_FREEFORCHAT);
+   mnuStatus->setAccel(a->key(ICQ_STATUS_OFFLINE), ICQ_STATUS_OFFLINE);
+   mnuStatus->setAccel(a->key(ICQ_STATUS_FxPRIVATE), ICQ_STATUS_FxPRIVATE);
+
    connect(mnuStatus, SIGNAL(activated(int)), this, SLOT(changeStatusManual(int)));
 
    mnuUserGroups = new QPopupMenu(NULL);

Reply via email to