Checking in some widget changes to support scrolling with the mouse

wheel.  Layout changes (to make it actually work) will follow soon,
and also a Windows implementation.  r=blizzard.


git-svn-id: svn://10.0.0.236/trunk@53757 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bryner%uiuc.edu
1999-11-17 06:54:02 +00:00
parent de8d2d027f
commit 997ba5b632
2 changed files with 39 additions and 0 deletions

View File

@@ -179,6 +179,10 @@ struct nsCompositionEvent : public nsInputEvent {
nsTextEventReply theReply;
};
struct nsMouseScrollEvent : public nsInputEvent {
PRInt32 deltaLines;
};
/**
* Tooltip event
*/
@@ -229,6 +233,7 @@ enum nsDragDropEventStatus {
#define NS_TEXT_EVENT 12
#define NS_COMPOSITION_START 13
#define NS_COMPOSITION_END 14
#define NS_MOUSE_SCROLL_EVENT 15
/**
* GUI MESSAGES
@@ -342,6 +347,9 @@ enum nsDragDropEventStatus {
#define NS_XUL_COMMAND_UPDATE (NS_MENU_EVENT_START+4)
//@}
// Scroll events
#define NS_MOUSE_SCROLL_START 1600
#define NS_MOUSE_SCROLL (NS_MOUSE_SCROLL_START)
#define NS_IS_MOUSE_EVENT(evnt) \
(((evnt)->message == NS_MOUSE_LEFT_BUTTON_DOWN) || \

View File

@@ -1901,6 +1901,7 @@ nsWidget::OnLeaveNotifySignal(GdkEventCrossing * aGdkCrossingEvent)
nsWidget::OnButtonPressSignal(GdkEventButton * aGdkButtonEvent)
{
nsMouseEvent event;
nsMouseScrollEvent scrollEvent;
PRUint32 eventType = 0;
#if defined(DEBUG_pavlov) || defined(DEBUG_akkana)
@@ -1952,6 +1953,30 @@ nsWidget::OnButtonPressSignal(GdkEventButton * aGdkButtonEvent)
eventType = NS_MOUSE_RIGHT_BUTTON_DOWN;
break;
case 4:
case 5:
if (aGdkButtonEvent->button == 4)
scrollEvent.deltaLines = -3;
else
scrollEvent.deltaLines = 3;
scrollEvent.message = NS_MOUSE_SCROLL;
scrollEvent.widget = this;
scrollEvent.eventStructType = NS_MOUSE_SCROLL_EVENT;
scrollEvent.point.x = nscoord(aGdkButtonEvent->x);
scrollEvent.point.y = nscoord(aGdkButtonEvent->y);
scrollEvent.isShift = (aGdkButtonEvent->state & GDK_SHIFT_MASK) ? PR_TRUE : PR_FALSE;
scrollEvent.isControl = (aGdkButtonEvent->state & GDK_CONTROL_MASK) ? PR_TRUE : PR_FALSE;
scrollEvent.isAlt = (aGdkButtonEvent->state & GDK_MOD1_MASK) ? PR_TRUE : PR_FALSE;
scrollEvent.time = aGdkButtonEvent->time;
AddRef();
if (mEventCallback)
DispatchWindowEvent(&scrollEvent);
Release();
return;
// Single-click default.
default:
eventType = NS_MOUSE_LEFT_BUTTON_DOWN;
@@ -2002,6 +2027,12 @@ nsWidget::OnButtonReleaseSignal(GdkEventButton * aGdkButtonEvent)
eventType = NS_MOUSE_RIGHT_BUTTON_UP;
break;
case 4:
case 5:
// We don't really need to do anything here, but we don't want
// LEFT_BUTTON_UP to happen
return;
default:
eventType = NS_MOUSE_LEFT_BUTTON_UP;
break;