mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-10-06 00:30:10 -06:00
CtrlCore: Default MouseWheel implementation now propagates to parent
git-svn-id: svn://ultimatepp.org/upp/trunk@5959 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
c096069a33
commit
d3305c09a1
5 changed files with 99 additions and 70 deletions
|
|
@ -80,6 +80,21 @@ Image Ctrl::FrameMouseEvent(int event, Point p, int zdelta, dword keyflags)
|
|||
return Image::Arrow();
|
||||
}
|
||||
|
||||
static bool sPropagated;
|
||||
|
||||
Image Ctrl::MouseEvent0(int event, Point p, int zdelta, dword keyflags)
|
||||
{
|
||||
GuiLock __;
|
||||
Ptr<Ctrl> this_ = this;
|
||||
bool pb = sPropagated;
|
||||
sPropagated = false;
|
||||
Image m = this_ ? MouseEvent(event, p, zdelta, keyflags) : Image();
|
||||
if(event == MOUSEWHEEL && !sPropagated && this_ && parent)
|
||||
parent->ChildMouseEvent(this, event, p, zdelta, keyflags);
|
||||
sPropagated = pb;
|
||||
return m;
|
||||
}
|
||||
|
||||
Image Ctrl::MouseEventH(int event, Point p, int zdelta, dword keyflags)
|
||||
{
|
||||
GuiLock __;
|
||||
|
|
@ -89,9 +104,21 @@ Image Ctrl::MouseEventH(int event, Point p, int zdelta, dword keyflags)
|
|||
return Image::Arrow();
|
||||
if(this_)
|
||||
LogMouseEvent(NULL, this, event, p, zdelta, keyflags);
|
||||
if(parent && this_)
|
||||
if(this_ && parent && event != MOUSEWHEEL)
|
||||
parent->ChildMouseEvent(this, event, p, zdelta, keyflags);
|
||||
return this_ ? MouseEvent(event, p, zdelta, keyflags) : Image();
|
||||
return MouseEvent0(event, p, zdelta, keyflags);
|
||||
}
|
||||
|
||||
void Ctrl::MouseWheel(Point p, int zd, dword kf)
|
||||
{
|
||||
if(parent) {
|
||||
p += GetScreenView().TopLeft();
|
||||
Rect r = parent->GetScreenView();
|
||||
if(r.Contains(p)) {
|
||||
parent->MouseEvent0(MOUSEWHEEL, p - r.TopLeft(), zd, kf);
|
||||
sPropagated = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Ctrl::ChildFrameMouseEvent(Ctrl *child, int event, Point p, int zdelta, dword keyflags)
|
||||
|
|
|
|||
Loading…
Reference in a new issue