mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 17:19:44 -06:00
Upgrade WX to r74856, mainly to support @2x.
This commit is contained in:
121
Externals/wxWidgets3/include/wx/scrolwin.h
vendored
121
Externals/wxWidgets3/include/wx/scrolwin.h
vendored
@ -4,7 +4,6 @@
|
||||
// Author: Vadim Zeitlin
|
||||
// Modified by:
|
||||
// Created: 30.08.00
|
||||
// RCS-ID: $Id: scrolwin.h 64943 2010-07-13 13:29:58Z VZ $
|
||||
// Copyright: (c) 2000 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
@ -37,6 +36,10 @@ enum wxScrollbarVisibility
|
||||
//
|
||||
// So we have
|
||||
//
|
||||
// wxAnyScrollHelperBase
|
||||
// |
|
||||
// |
|
||||
// \|/
|
||||
// wxScrollHelperBase
|
||||
// |
|
||||
// |
|
||||
@ -56,7 +59,51 @@ enum wxScrollbarVisibility
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_CORE wxScrollHelperBase
|
||||
// This class allows reusing some of wxScrollHelperBase functionality in
|
||||
// wxVarScrollHelperBase in wx/vscroll.h without duplicating its code.
|
||||
class WXDLLIMPEXP_CORE wxAnyScrollHelperBase
|
||||
{
|
||||
public:
|
||||
wxEXPLICIT wxAnyScrollHelperBase(wxWindow* win);
|
||||
virtual ~wxAnyScrollHelperBase() {}
|
||||
|
||||
// Disable use of keyboard keys for scrolling. By default cursor movement
|
||||
// keys (including Home, End, Page Up and Down) are used to scroll the
|
||||
// window appropriately. If the derived class uses these keys for something
|
||||
// else, e.g. changing the currently selected item, this function can be
|
||||
// used to disable this behaviour as it's not only not necessary then but
|
||||
// can actually be actively harmful if another object forwards a keyboard
|
||||
// event corresponding to one of the above keys to us using
|
||||
// ProcessWindowEvent() because the event will always be processed which
|
||||
// can be undesirable.
|
||||
void DisableKeyboardScrolling() { m_kbdScrollingEnabled = false; }
|
||||
|
||||
// Override this function to draw the graphic (or just process EVT_PAINT)
|
||||
virtual void OnDraw(wxDC& WXUNUSED(dc)) { }
|
||||
|
||||
// change the DC origin according to the scroll position.
|
||||
virtual void DoPrepareDC(wxDC& dc) = 0;
|
||||
|
||||
// Simple accessor for the window that is really being scrolled.
|
||||
wxWindow *GetTargetWindow() const { return m_targetWindow; }
|
||||
|
||||
|
||||
// The methods called from the window event handlers.
|
||||
void HandleOnChar(wxKeyEvent& event);
|
||||
void HandleOnPaint(wxPaintEvent& event);
|
||||
|
||||
protected:
|
||||
// the window that receives the scroll events and the window to actually
|
||||
// scroll, respectively
|
||||
wxWindow *m_win,
|
||||
*m_targetWindow;
|
||||
|
||||
// whether cursor keys should scroll the window
|
||||
bool m_kbdScrollingEnabled;
|
||||
};
|
||||
|
||||
// This is the class containing the guts of (uniform) scrolling logic.
|
||||
class WXDLLIMPEXP_CORE wxScrollHelperBase : public wxAnyScrollHelperBase
|
||||
{
|
||||
public:
|
||||
// ctor must be given the associated window
|
||||
@ -101,24 +148,20 @@ public:
|
||||
DoShowScrollbars(horz, vert);
|
||||
}
|
||||
|
||||
// Test whether the specified scrollbar is shown.
|
||||
virtual bool IsScrollbarShown(int orient) const = 0;
|
||||
|
||||
// Enable/disable Windows scrolling in either direction. If true, wxWidgets
|
||||
// scrolls the canvas and only a bit of the canvas is invalidated; no
|
||||
// Clear() is necessary. If false, the whole canvas is invalidated and a
|
||||
// Clear() is necessary. Disable for when the scroll increment is used to
|
||||
// actually scroll a non-constant distance
|
||||
//
|
||||
// Notice that calling this method with a false argument doesn't disable
|
||||
// scrolling the window in this direction, it just changes the mechanism by
|
||||
// which it is implemented to not use wxWindow::ScrollWindow().
|
||||
virtual void EnableScrolling(bool x_scrolling, bool y_scrolling);
|
||||
|
||||
// Disable use of keyboard keys for scrolling. By default cursor movement
|
||||
// keys (including Home, End, Page Up and Down) are used to scroll the
|
||||
// window appropriately. If the derived class uses these keys for something
|
||||
// else, e.g. changing the currently selected item, this function can be
|
||||
// used to disable this behaviour as it's not only not necessary then but
|
||||
// can actually be actively harmful if another object forwards a keyboard
|
||||
// event corresponding to one of the above keys to us using
|
||||
// ProcessWindowEvent() because the event will always be processed which
|
||||
// can be undesirable.
|
||||
void DisableKeyboardScrolling() { m_kbdScrollingEnabled = false; }
|
||||
|
||||
// Get the view start
|
||||
void GetViewStart(int *x, int *y) const { DoGetViewStart(x, y); }
|
||||
|
||||
@ -167,15 +210,10 @@ public:
|
||||
// child of it in order to scroll only a portion the area between the
|
||||
// scrollbars (spreadsheet: only cell area will move).
|
||||
void SetTargetWindow(wxWindow *target);
|
||||
wxWindow *GetTargetWindow() const;
|
||||
|
||||
void SetTargetRect(const wxRect& rect) { m_rectToScroll = rect; }
|
||||
wxRect GetTargetRect() const { return m_rectToScroll; }
|
||||
|
||||
// Override this function to draw the graphic (or just process EVT_PAINT)
|
||||
virtual void OnDraw(wxDC& WXUNUSED(dc)) { }
|
||||
|
||||
// change the DC origin according to the scroll position.
|
||||
virtual void DoPrepareDC(wxDC& dc);
|
||||
|
||||
// are we generating the autoscroll events?
|
||||
@ -195,8 +233,6 @@ public:
|
||||
// the methods to be called from the window event handlers
|
||||
void HandleOnScroll(wxScrollWinEvent& event);
|
||||
void HandleOnSize(wxSizeEvent& event);
|
||||
void HandleOnPaint(wxPaintEvent& event);
|
||||
void HandleOnChar(wxKeyEvent& event);
|
||||
void HandleOnMouseEnter(wxMouseEvent& event);
|
||||
void HandleOnMouseLeave(wxMouseEvent& event);
|
||||
#if wxUSE_MOUSEWHEEL
|
||||
@ -252,10 +288,6 @@ protected:
|
||||
// delete the event handler we installed
|
||||
void DeleteEvtHandler();
|
||||
|
||||
// calls wxScrollHelperEvtHandler::ResetDrawnFlag(), see explanation
|
||||
// in wxScrollHelperEvtHandler::ProcessEvent()
|
||||
void ResetDrawnFlag();
|
||||
|
||||
// this function should be overridden to return the size available for
|
||||
// m_targetWindow inside m_win of the given size
|
||||
//
|
||||
@ -276,13 +308,14 @@ protected:
|
||||
double m_scaleX;
|
||||
double m_scaleY;
|
||||
|
||||
wxWindow *m_win,
|
||||
*m_targetWindow;
|
||||
|
||||
wxRect m_rectToScroll;
|
||||
|
||||
wxTimer *m_timerAutoScroll;
|
||||
|
||||
// The number of pixels to scroll in horizontal and vertical directions
|
||||
// respectively.
|
||||
//
|
||||
// If 0, means that the scrolling in the given direction is disabled.
|
||||
int m_xScrollPixelsPerLine;
|
||||
int m_yScrollPixelsPerLine;
|
||||
int m_xScrollPosition;
|
||||
@ -295,8 +328,6 @@ protected:
|
||||
bool m_xScrollingEnabled;
|
||||
bool m_yScrollingEnabled;
|
||||
|
||||
bool m_kbdScrollingEnabled;
|
||||
|
||||
#if wxUSE_MOUSEWHEEL
|
||||
int m_wheelRotation;
|
||||
#endif // wxUSE_MOUSEWHEEL
|
||||
@ -312,6 +343,8 @@ protected:
|
||||
public: \
|
||||
virtual void PrepareDC(wxDC& dc) { DoPrepareDC(dc); } \
|
||||
virtual bool Layout() { return ScrollLayout(); } \
|
||||
virtual bool CanScroll(int orient) const \
|
||||
{ return IsScrollbarShown(orient); } \
|
||||
virtual void DoSetVirtualSize(int x, int y) \
|
||||
{ ScrollDoSetVirtualSize(x, y); } \
|
||||
virtual wxSize GetBestVirtualSize() const \
|
||||
@ -376,24 +409,38 @@ public:
|
||||
this->MacSetClipChildren(true);
|
||||
#endif
|
||||
|
||||
this->Connect(wxEVT_PAINT, wxPaintEventHandler(wxScrolled::OnPaint));
|
||||
|
||||
// by default, we're scrollable in both directions (but if one of the
|
||||
// styles is specified explicitly, we shouldn't add the other one
|
||||
// automatically)
|
||||
if ( !(style & (wxHSCROLL | wxVSCROLL)) )
|
||||
style |= wxHSCROLL | wxVSCROLL;
|
||||
|
||||
#ifdef __WXOSX__
|
||||
bool retval = T::Create(parent, winid, pos, size, style, name);
|
||||
if ( retval && (style & wxALWAYS_SHOW_SB) )
|
||||
ShowScrollbars(wxSHOW_SB_ALWAYS, wxSHOW_SB_ALWAYS);
|
||||
return retval;
|
||||
#else
|
||||
if ( style & wxALWAYS_SHOW_SB )
|
||||
ShowScrollbars(wxSHOW_SB_ALWAYS, wxSHOW_SB_ALWAYS);
|
||||
|
||||
return T::Create(parent, winid, pos, size, style, name);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef __WXMSW__
|
||||
// we need to return a special WM_GETDLGCODE value to process just the
|
||||
// arrows but let the other navigation characters through
|
||||
#ifdef __WXMSW__
|
||||
virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
|
||||
{
|
||||
return FilterMSWWindowProc(nMsg, T::MSWWindowProc(nMsg, wParam, lParam));
|
||||
}
|
||||
|
||||
// Take into account the scroll origin.
|
||||
virtual void MSWAdjustBrushOrg(int* xOrg, int* yOrg) const
|
||||
{
|
||||
CalcUnscrolledPosition(*xOrg, *yOrg, xOrg, yOrg);
|
||||
}
|
||||
#endif // __WXMSW__
|
||||
|
||||
WX_FORWARD_TO_SCROLL_HELPER()
|
||||
@ -405,16 +452,6 @@ protected:
|
||||
}
|
||||
|
||||
private:
|
||||
// this is needed for wxEVT_PAINT processing hack described in
|
||||
// wxScrollHelperEvtHandler::ProcessEvent()
|
||||
void OnPaint(wxPaintEvent& event)
|
||||
{
|
||||
// the user code didn't really draw the window if we got here, so set
|
||||
// this flag to try to call OnDraw() later
|
||||
ResetDrawnFlag();
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
// VC++ 6 gives warning for the declaration of template member function
|
||||
// without definition
|
||||
#ifndef __VISUALC6__
|
||||
|
Reference in New Issue
Block a user