-----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);