POW - fix use of IntelliMouse


Subject: POW - fix use of IntelliMouse
From: Robert Sievers (bob@abisource.com)
Date: Wed May 17 2000 - 17:53:20 CDT


The goal of this POW is to close bugs #655 and #825, which cover a variety
of problems relating to the use of the IntelliMouse. These problems span
both Windows and Linux, but at different code points for the two platforms,
so if you only feel comfortable doing half this POW, please jump right in.
Although this POW is fairly localized, it still might be a great POW to
share.

Part of this POW will be figuring out whether the issues outline below are
even the fault of AbiWord in the first place. It is unlikely but possible
the root of the problem lies with GTK. It is also possible this might be
due to specific configurations of the X Window System and IntelliMouse
drivers. Regardless, we would like a clear understanding of what is going
on before we pass the buck. Odds are, however, that some problems do lie
within AbiWord code. This POW is fairly isolated, and so will offer a great
opportunity for someone to get involved with the AbiSource code base. The
hard part will be finding someone with an IntelliMouse (or other
wheel-mouse) who would be able to test their changes. We have one here at
SourceGear, and would be more than happy to act a second opinion when you
are ready with a patch.

Here is the detailed scoop on what is happening:

On Linux:

The scroll wheel only works over the scroll bars. If you try using the
scroll wheel when the cursor is over the document, nothing happens. If you
try using the scroll wheel when the cursor is over the title bar, AbiWord
responds as though you were pressing the center mouse button on a standard
3-button mouse, and alternates between shade/unshade. If you try using the
scroll wheel when the cursor is over a menu, the menu opens. Each of these
affects basically reduce to this: the wheel scrolls when in the cursor is
in the scroll bar and acts as the middle mouse button otherwise. Note that
these behaviors are identical in Gnotepad+, and therefore might have
something do with the mouse configuration in X or GTK's interpretation of it.

On Windows:

When scrolling a page using the mouse wheel, AbiWord stops responding to
the keyboard. Pass focus away from AbiWord window, then back and keyboard
input will work again.

scope -----
The bug has some different parts, and so step one will be to figure out
whether the problem is related to AbiWord, GTK, or the IntelliMouse X
configuration. If the problem is not related to AbiWord, figure out what
it is, mail the list, and we can close these bugs and provide an FAQ for
all the IntelliMouse users. If the problem is AbiWord related, the code
additions should probably require no API changes or anything else which
would affect behavior on other platforms.

hints -----
The place to start in the AbiSource code base is:
1. In ap/src/af/ev/xp/ev_Mouse.cpp, This is the file where all mouse
events are intially collected.
2. Check out abi/src/af/ev/unix/ev_UnixMouse.cpp. This file contains all of
the mouse-related event code used by all applications derived from the
application framework (AbiWord is one of these) for Unix. Special
IntelliMouse functionality would be put here.
3. Check out abi/src/af/ev/win/ev_WinMouse32.cpp. This file contains all
of the mouse-related event code used by all applications derived from the
application framework (AbiWord is one of these) for Win32. Special
IntelliMouse functionality would be put here.
4. Check out abi/src/af/xap/unix/xap_UnixFrame.cpp (or
abi/src/af/xap/win/xap_Win32Frame.cpp). This file contains the bits of
code that link the ev_Mouse classes to the cross-application top-level
frame. Code will most likely need to be added here to define exactly what
happens when scroll events are received in the top-level frame.

This type of detail and hardware compatibility is what we feel make AbiWord
a true gem.

Enjoy!

Bob

PS: For more background on the POW / ZAP / SHAZAM concept, see the
following introduction:
http://www.abisource.com/mailinglists/abiword-dev/99/September/0097.html

Robert Sievers
Open Source Evangelist



This archive was generated by hypermail 2b25 : Wed May 17 2000 - 17:55:19 CDT