r=mkaply, a=blizzard
Code from jkobal to handle VSCROLL messages to get Thinkpad trackpoint scrolling working


git-svn-id: svn://10.0.0.236/trunk@81732 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
mkaply%us.ibm.com
2000-10-25 10:58:20 +00:00
parent 26947aef70
commit bbe9d86813
4 changed files with 77 additions and 7 deletions

View File

@@ -222,7 +222,7 @@ NS_METHOD nsScrollbar::SetParameters(PRUint32 aMaxRange, PRUint32 aThumbSize,
// Deal with scrollbar messages (actually implemented only in nsScrollbar)
//
//-------------------------------------------------------------------------
PRBool nsScrollbar::OnScroll( MPARAM mp1, MPARAM mp2)
PRBool nsScrollbar::OnScroll( ULONG msgid, MPARAM mp1, MPARAM mp2)
{
PRBool result = PR_TRUE;

View File

@@ -56,7 +56,7 @@ public:
NS_IMETHOD SetParameters(PRUint32 aMaxRange, PRUint32 aThumbSize,
PRUint32 aPosition, PRUint32 aLineIncrement);
virtual PRBool OnScroll( MPARAM mp1, MPARAM mp2);
virtual PRBool OnScroll( ULONG msgid, MPARAM mp1, MPARAM mp2);
NS_IMETHOD GetBounds(nsRect &aRect);
protected:

View File

@@ -1799,7 +1799,7 @@ PRBool nsWindow::OnKey( MPARAM mp1, MPARAM mp2)
event.isShift = PR_FALSE; // OS2TODO - Why do we need this?
event.keyCode = 0;
}
else if (usChar != VK_SPACE)
else if (usVKey != VK_SPACE)
{
event.charCode = 0;
}
@@ -1924,7 +1924,7 @@ PRBool nsWindow::ProcessMessage( ULONG msg, MPARAM mp1, MPARAM mp2, MRESULT &rc)
case WM_HSCROLL:
case WM_VSCROLL:
result = OnScroll( mp1, mp2);
result = OnScroll( msg, mp1, mp2);
break;
case WM_FOCUSCHANGED:
@@ -2393,11 +2393,79 @@ PRBool nsWindow::DispatchMouseEvent( PRUint32 aEventType, MPARAM mp1, MPARAM mp2
//-------------------------------------------------------------------------
//
// Deal with scrollbar messages (actually implemented only in nsScrollbar)
// Deal with scrollbar messages
//
//-------------------------------------------------------------------------
PRBool nsWindow::OnScroll( MPARAM mp1, MPARAM mp2)
PRBool nsWindow::OnScroll( ULONG msgid, MPARAM mp1, MPARAM mp2)
{
return( (msgid == WM_HSCROLL) ? OnHScroll(mp1, mp2) : OnVScroll(mp1, mp2) );
}
PRBool nsWindow::OnVScroll( MPARAM mp1, MPARAM mp2)
{
if (nsnull != mEventCallback) {
nsMouseScrollEvent scrollEvent;
scrollEvent.eventStructType = NS_MOUSE_SCROLL_EVENT;
InitEvent(scrollEvent, NS_MOUSE_SCROLL);
scrollEvent.isShift = WinIsKeyDown( VK_SHIFT);
scrollEvent.isControl = WinIsKeyDown( VK_CTRL);
scrollEvent.isAlt = WinIsKeyDown( VK_ALT) || WinIsKeyDown( VK_ALTGRAF);
scrollEvent.isMeta = PR_FALSE;
switch (SHORT2FROMMP(mp2)) {
case SB_LINEUP:
scrollEvent.deltaLines = -1;
break;
case SB_LINEDOWN:
scrollEvent.deltaLines = 1;
break;
case SB_PAGEUP:
scrollEvent.deltaLines = -10; /* OS2TODO ??? */
break;
case SB_PAGEDOWN:
scrollEvent.deltaLines = 10; /* OS2TODO ??? */
break;
default:
scrollEvent.deltaLines = 0;
break;
}
DispatchWindowEvent(&scrollEvent);
}
// OS2TODO NS_RELEASE(scrollEvent.widget);
return PR_FALSE;
}
PRBool nsWindow::OnHScroll( MPARAM mp1, MPARAM mp2)
{
#if 0 /* OS2TODO */
if (nsnull != mEventCallback) {
nsMouseScrollEvent scrollEvent;
scrollEvent.eventStructType = NS_MOUSE_SCROLL_EVENT;
InitEvent(scrollEvent, NS_MOUSE_SCROLL);
scrollEvent.isShift = WinIsKeyDown( VK_SHIFT);
scrollEvent.isControl = WinIsKeyDown( VK_CTRL);
scrollEvent.isAlt = WinIsKeyDown( VK_ALT) || WinIsKeyDown( VK_ALTGRAF);
scrollEvent.isMeta = PR_FALSE;
switch (SHORT2FROMMP(mp2)) {
case SB_LINELEFT:
scrollEvent.deltaColumns = -1;
break;
case SB_LINERIGHT:
scrollEvent.deltaColumns = 1;
break;
case SB_PAGELEFT:
scrollEvent.deltaColumns = -10; /* OS2TODO ??? */
break;
case SB_PAGERIGHT:
scrollEvent.deltaColumns = 10; /* OS2TODO ??? */
break;
default:
scrollEvent.deltaColumns = 0;
break;
}
DispatchWindowEvent(&scrollEvent);
}
// OS2TODO NS_RELEASE(scrollEvent.widget);
#endif
return PR_FALSE;
}

View File

@@ -205,7 +205,9 @@ protected:
virtual PRBool OnMove( PRInt32 aX, PRInt32 aY);
virtual PRBool OnKey( MPARAM mp1, MPARAM mp2);
virtual PRBool OnRealizePalette();
virtual PRBool OnScroll( MPARAM mp1, MPARAM mp2);
virtual PRBool OnScroll( ULONG msgid, MPARAM mp1, MPARAM mp2);
virtual PRBool OnVScroll( MPARAM mp1, MPARAM mp2);
virtual PRBool OnHScroll( MPARAM mp1, MPARAM mp2);
virtual PRBool OnControl( MPARAM mp1, MPARAM mp2);
// virtual PRBool OnMenuClick( USHORT aCmd);
// virtual PRBool OnActivateMenu( HWND aMenu, BOOL aActivate);