SL-11910 [Win] Horizontal scroll
parent
b31a93baa8
commit
98b28e5881
|
|
@ -408,6 +408,16 @@ BOOL LLScrollbar::handleScrollWheel(S32 x, S32 y, S32 clicks)
|
|||
return handled;
|
||||
}
|
||||
|
||||
BOOL LLScrollbar::handleScrollHWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
BOOL handled = FALSE;
|
||||
if (LLScrollbar::HORIZONTAL == mOrientation)
|
||||
{
|
||||
handled = changeLine(clicks * mStepSize, TRUE);
|
||||
}
|
||||
return handled;
|
||||
}
|
||||
|
||||
BOOL LLScrollbar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
|
||||
EDragAndDropType cargo_type, void *cargo_data, EAcceptance *accept, std::string &tooltip_msg)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ public:
|
|||
virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleHover(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
||||
virtual BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks);
|
||||
virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
|
||||
EDragAndDropType cargo_type, void *cargo_data, EAcceptance *accept, std::string &tooltip_msg);
|
||||
|
||||
|
|
|
|||
|
|
@ -272,6 +272,25 @@ BOOL LLScrollContainer::handleScrollWheel( S32 x, S32 y, S32 clicks )
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL LLScrollContainer::handleScrollHWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
if (LLUICtrl::handleScrollHWheel(x,y,clicks))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
LLScrollbar* horizontal = mScrollbar[HORIZONTAL];
|
||||
if (horizontal->getVisible()
|
||||
&& horizontal->getEnabled()
|
||||
&& horizontal->handleScrollHWheel( 0, 0, clicks ) )
|
||||
{
|
||||
updateScroll();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL LLScrollContainer::handleDragAndDrop(S32 x, S32 y, MASK mask,
|
||||
BOOL drop,
|
||||
EDragAndDropType cargo_type,
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ public:
|
|||
virtual BOOL handleKeyHere(KEY key, MASK mask);
|
||||
virtual BOOL handleUnicodeCharHere(llwchar uni_char);
|
||||
virtual BOOL handleScrollWheel( S32 x, S32 y, S32 clicks );
|
||||
virtual BOOL handleScrollHWheel( S32 x, S32 y, S32 clicks );
|
||||
virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
|
||||
EDragAndDropType cargo_type,
|
||||
void* cargo_data,
|
||||
|
|
|
|||
|
|
@ -1601,6 +1601,20 @@ BOOL LLScrollListCtrl::handleScrollWheel(S32 x, S32 y, S32 clicks)
|
|||
return handled;
|
||||
}
|
||||
|
||||
BOOL LLScrollListCtrl::handleScrollHWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
BOOL handled = FALSE;
|
||||
// Pretend the mouse is over the scrollbar
|
||||
handled = mScrollbar->handleScrollHWheel( 0, 0, clicks );
|
||||
|
||||
if (mMouseWheelOpaque)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return handled;
|
||||
}
|
||||
|
||||
// *NOTE: Requires a valid row_index and column_index
|
||||
LLRect LLScrollListCtrl::getCellRect(S32 row_index, S32 column_index)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -317,6 +317,7 @@ public:
|
|||
/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
|
||||
/*virtual*/ BOOL handleUnicodeCharHere(llwchar uni_char);
|
||||
/*virtual*/ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
||||
/*virtual*/ BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks);
|
||||
/*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ void setEnabled(BOOL enabled);
|
||||
/*virtual*/ void setFocus( BOOL b );
|
||||
|
|
|
|||
|
|
@ -3113,6 +3113,7 @@ BOOL LLTextSegment::handleRightMouseUp(S32 x, S32 y, MASK mask) { return FALSE;
|
|||
BOOL LLTextSegment::handleDoubleClick(S32 x, S32 y, MASK mask) { return FALSE; }
|
||||
BOOL LLTextSegment::handleHover(S32 x, S32 y, MASK mask) { return FALSE; }
|
||||
BOOL LLTextSegment::handleScrollWheel(S32 x, S32 y, S32 clicks) { return FALSE; }
|
||||
BOOL LLTextSegment::handleScrollHWheel(S32 x, S32 y, S32 clicks) { return FALSE; }
|
||||
BOOL LLTextSegment::handleToolTip(S32 x, S32 y, MASK mask) { return FALSE; }
|
||||
const std::string& LLTextSegment::getName() const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@ public:
|
|||
/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
||||
/*virtual*/ BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks);
|
||||
/*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ const std::string& getName() const;
|
||||
/*virtual*/ void onMouseCaptureLost();
|
||||
|
|
|
|||
|
|
@ -1060,6 +1060,11 @@ BOOL LLView::handleScrollWheel(S32 x, S32 y, S32 clicks)
|
|||
return childrenHandleScrollWheel( x, y, clicks ) != NULL;
|
||||
}
|
||||
|
||||
BOOL LLView::handleScrollHWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
return childrenHandleScrollHWheel( x, y, clicks ) != NULL;
|
||||
}
|
||||
|
||||
BOOL LLView::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
return childrenHandleRightMouseDown( x, y, mask ) != NULL;
|
||||
|
|
@ -1085,6 +1090,11 @@ LLView* LLView::childrenHandleScrollWheel(S32 x, S32 y, S32 clicks)
|
|||
return childrenHandleMouseEvent(&LLView::handleScrollWheel, x, y, clicks, false);
|
||||
}
|
||||
|
||||
LLView* LLView::childrenHandleScrollHWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
return childrenHandleMouseEvent(&LLView::handleScrollHWheel, x, y, clicks, false);
|
||||
}
|
||||
|
||||
// Called during downward traversal
|
||||
LLView* LLView::childrenHandleKey(KEY key, MASK mask)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -426,6 +426,7 @@ public:
|
|||
/*virtual*/ BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
||||
/*virtual*/ BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks);
|
||||
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleRightMouseUp(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask);
|
||||
|
|
@ -556,6 +557,7 @@ protected:
|
|||
LLView* childrenHandleMiddleMouseDown(S32 x, S32 y, MASK mask);
|
||||
LLView* childrenHandleDoubleClick(S32 x, S32 y, MASK mask);
|
||||
LLView* childrenHandleScrollWheel(S32 x, S32 y, S32 clicks);
|
||||
LLView* childrenHandleScrollHWheel(S32 x, S32 y, S32 clicks);
|
||||
LLView* childrenHandleRightMouseDown(S32 x, S32 y, MASK mask);
|
||||
LLView* childrenHandleRightMouseUp(S32 x, S32 y, MASK mask);
|
||||
LLView* childrenHandleToolTip(S32 x, S32 y, MASK mask);
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ public:
|
|||
|
||||
virtual BOOL handleHover(S32 x, S32 y, MASK mask) = 0;
|
||||
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks) = 0;
|
||||
virtual BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks) = 0;
|
||||
virtual BOOL handleToolTip(S32 x, S32 y, MASK mask) = 0;
|
||||
virtual const std::string& getName() const = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -130,6 +130,10 @@ void LLWindowCallbacks::handleScrollWheel(LLWindow *window, S32 clicks)
|
|||
{
|
||||
}
|
||||
|
||||
void LLWindowCallbacks::handleScrollHWheel(LLWindow *window, S32 clicks)
|
||||
{
|
||||
}
|
||||
|
||||
void LLWindowCallbacks::handleResize(LLWindow *window, const S32 width, const S32 height)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ public:
|
|||
virtual void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask);
|
||||
virtual void handleMouseDragged(LLWindow *window, LLCoordGL pos, MASK mask);
|
||||
virtual void handleScrollWheel(LLWindow *window, S32 clicks);
|
||||
virtual void handleScrollHWheel(LLWindow *window, S32 clicks);
|
||||
virtual void handleResize(LLWindow *window, S32 width, S32 height);
|
||||
virtual void handleFocus(LLWindow *window);
|
||||
virtual void handleFocusLost(LLWindow *window);
|
||||
|
|
|
|||
|
|
@ -2662,6 +2662,42 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
|
|||
return 0;
|
||||
}
|
||||
*/
|
||||
case WM_MOUSEHWHEEL:
|
||||
{
|
||||
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEHWHEEL");
|
||||
static short h_delta = 0;
|
||||
|
||||
RECT client_rect;
|
||||
|
||||
// eat scroll events that occur outside our window, since we use mouse position to direct scroll
|
||||
// instead of keyboard focus
|
||||
// NOTE: mouse_coord is in *window* coordinates for scroll events
|
||||
POINT mouse_coord = {(S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param)};
|
||||
|
||||
if (ScreenToClient(window_imp->mWindowHandle, &mouse_coord)
|
||||
&& GetClientRect(window_imp->mWindowHandle, &client_rect))
|
||||
{
|
||||
// we have a valid mouse point and client rect
|
||||
if (mouse_coord.x < client_rect.left || client_rect.right < mouse_coord.x
|
||||
|| mouse_coord.y < client_rect.top || client_rect.bottom < mouse_coord.y)
|
||||
{
|
||||
// mouse is outside of client rect, so don't do anything
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
S16 incoming_h_delta = HIWORD(w_param);
|
||||
h_delta += incoming_h_delta;
|
||||
|
||||
// If the user rapidly spins the wheel, we can get messages with
|
||||
// large deltas, like 480 or so. Thus we need to scroll more quickly.
|
||||
if (h_delta <= -WHEEL_DELTA || WHEEL_DELTA <= h_delta)
|
||||
{
|
||||
window_imp->mCallbacks->handleScrollHWheel(window_imp, h_delta / WHEEL_DELTA);
|
||||
h_delta = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
// Handle mouse movement within the window
|
||||
case WM_MOUSEMOVE:
|
||||
{
|
||||
|
|
|
|||
|
|
@ -210,6 +210,20 @@ BOOL LLMediaCtrl::handleScrollWheel( S32 x, S32 y, S32 clicks )
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
BOOL LLMediaCtrl::handleScrollHWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
if (LLPanel::handleScrollHWheel(x, y, clicks)) return TRUE;
|
||||
if (mMediaSource && mMediaSource->hasMedia())
|
||||
{
|
||||
convertInputCoords(x, y);
|
||||
mMediaSource->scrollWheel(x, y, clicks, 0, gKeyboard->currentMask(TRUE));
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// virtual
|
||||
BOOL LLMediaCtrl::handleToolTip(S32 x, S32 y, MASK mask)
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ public:
|
|||
virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleDoubleClick( S32 x, S32 y, MASK mask );
|
||||
virtual BOOL handleScrollWheel( S32 x, S32 y, S32 clicks );
|
||||
virtual BOOL handleScrollHWheel( S32 x, S32 y, S32 clicks );
|
||||
virtual BOOL handleToolTip(S32 x, S32 y, MASK mask);
|
||||
|
||||
// navigation
|
||||
|
|
|
|||
|
|
@ -115,6 +115,12 @@ BOOL LLTool::handleScrollWheel(S32 x, S32 y, S32 clicks)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL LLTool::handleScrollHWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
// by default, didn't handle it
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL LLTool::handleDoubleClick(S32 x,S32 y,MASK mask)
|
||||
{
|
||||
// LL_INFOS() << "LLTool::handleDoubleClick" << LL_ENDL;
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ public:
|
|||
|
||||
virtual BOOL handleHover(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
||||
virtual BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks);
|
||||
virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask);
|
||||
|
|
|
|||
|
|
@ -208,6 +208,11 @@ BOOL LLToolPie::handleScrollWheel(S32 x, S32 y, S32 clicks)
|
|||
return LLViewerMediaFocus::getInstance()->handleScrollWheel(x, y, clicks);
|
||||
}
|
||||
|
||||
BOOL LLToolPie::handleScrollHWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
return LLViewerMediaFocus::getInstance()->handleScrollWheel(x, y, clicks);
|
||||
}
|
||||
|
||||
// True if you selected an object.
|
||||
BOOL LLToolPie::handleLeftClickPick()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ public:
|
|||
virtual BOOL handleHover(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
|
||||
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
||||
virtual BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks);
|
||||
virtual BOOL handleToolTip(S32 x, S32 y, MASK mask);
|
||||
|
||||
virtual void render();
|
||||
|
|
|
|||
|
|
@ -314,6 +314,7 @@ public:
|
|||
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask) { return FALSE; };
|
||||
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask) { return FALSE; };
|
||||
/*virtual*/ BOOL handleScrollWheel(S32 x, S32 y, S32 clicks) { return FALSE; };
|
||||
/*virtual*/ BOOL handleScrollHWheel(S32 x, S32 y, S32 clicks) { return FALSE; };
|
||||
/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask) { return FALSE; };
|
||||
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask) { return FALSE; };
|
||||
/*virtual*/ BOOL handleRightMouseUp(S32 x, S32 y, MASK mask) { return FALSE; };
|
||||
|
|
|
|||
|
|
@ -1587,6 +1587,11 @@ void LLViewerWindow::handleScrollWheel(LLWindow *window, S32 clicks)
|
|||
handleScrollWheel( clicks );
|
||||
}
|
||||
|
||||
void LLViewerWindow::handleScrollHWheel(LLWindow *window, S32 clicks)
|
||||
{
|
||||
handleScrollHWheel(clicks);
|
||||
}
|
||||
|
||||
void LLViewerWindow::handleWindowBlock(LLWindow *window)
|
||||
{
|
||||
send_agent_pause();
|
||||
|
|
@ -3004,6 +3009,49 @@ void LLViewerWindow::handleScrollWheel(S32 clicks)
|
|||
return;
|
||||
}
|
||||
|
||||
void LLViewerWindow::handleScrollHWheel(S32 clicks)
|
||||
{
|
||||
LLUI::resetMouseIdleTimer();
|
||||
|
||||
LLMouseHandler* mouse_captor = gFocusMgr.getMouseCapture();
|
||||
if (mouse_captor)
|
||||
{
|
||||
S32 local_x;
|
||||
S32 local_y;
|
||||
mouse_captor->screenPointToLocal(mCurrentMousePoint.mX, mCurrentMousePoint.mY, &local_x, &local_y);
|
||||
mouse_captor->handleScrollHWheel(local_x, local_y, clicks);
|
||||
if (LLView::sDebugMouseHandling)
|
||||
{
|
||||
LL_INFOS() << "Scroll Horizontal Wheel handled by captor " << mouse_captor->getName() << LL_ENDL;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl();
|
||||
if (top_ctrl)
|
||||
{
|
||||
S32 local_x;
|
||||
S32 local_y;
|
||||
top_ctrl->screenPointToLocal(mCurrentMousePoint.mX, mCurrentMousePoint.mY, &local_x, &local_y);
|
||||
if (top_ctrl->handleScrollHWheel(local_x, local_y, clicks)) return;
|
||||
}
|
||||
|
||||
if (mRootView->handleScrollHWheel(mCurrentMousePoint.mX, mCurrentMousePoint.mY, clicks))
|
||||
{
|
||||
if (LLView::sDebugMouseHandling)
|
||||
{
|
||||
LL_INFOS() << "Scroll Horizontal Wheel" << LLView::sMouseHandlerMessage << LL_ENDL;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (LLView::sDebugMouseHandling)
|
||||
{
|
||||
LL_INFOS() << "Scroll Horizontal Wheel not handled by view" << LL_ENDL;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void LLViewerWindow::addPopup(LLView* popup)
|
||||
{
|
||||
if (mPopupView)
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@ public:
|
|||
/*virtual*/ void handleMenuSelect(LLWindow *window, S32 menu_item);
|
||||
/*virtual*/ BOOL handlePaint(LLWindow *window, S32 x, S32 y, S32 width, S32 height);
|
||||
/*virtual*/ void handleScrollWheel(LLWindow *window, S32 clicks);
|
||||
/*virtual*/ void handleScrollHWheel(LLWindow *window, S32 clicks);
|
||||
/*virtual*/ BOOL handleDoubleClick(LLWindow *window, LLCoordGL pos, MASK mask);
|
||||
/*virtual*/ void handleWindowBlock(LLWindow *window);
|
||||
/*virtual*/ void handleWindowUnblock(LLWindow *window);
|
||||
|
|
@ -326,6 +327,7 @@ public:
|
|||
BOOL handleKey(KEY key, MASK mask);
|
||||
BOOL handleKeyUp(KEY key, MASK mask);
|
||||
void handleScrollWheel (S32 clicks);
|
||||
void handleScrollHWheel (S32 clicks);
|
||||
|
||||
// add and remove views from "popup" layer
|
||||
void addPopup(LLView* popup);
|
||||
|
|
|
|||
Loading…
Reference in New Issue