Mouse move - position track uanble get the child node on mou
Posted: Fri Feb 25, 2005 09:51
I am trapping mouse move event. My requirement is to select all nodes which are traversed on mouse drag. I am able to trap mouse move and is geteting appropriate position values. But if I try to get the child node at the mouse move position, this does not return a valid pointer.
Below is the code snippet.
/*************************************************************************
handle mouse move
*************************************************************************/
void DateButton::onMouseMove(MouseEventArgs& e)
{
static int num;
// ButtonBase::onMouseMove(e);
Window::onMouseMove(e);
Window* sheet = System::getSingleton().getGUISheet();
#ifdef DEBUG
this == sheet->getChildAtPosition(e.position);
// logIntValue("DateButton::onMouseMove from onMouseMove begin - date value if ", this->getDate());
#endif
// convert mouse position to something local
Point localMousePos(screenToWindow(e.position));
if (getMetricsMode() == Relative)
{
localMousePos = relativeToAbsolute(localMousePos);
}
#ifdef DEBUG
this == sheet->getChildAtPosition(e.position);
//logIntValue("DateButton::onMouseMove after localMousePos - date value if ", this->getDate());
#endif
if (d_dragMoving)
{
if (sheet != NULL)
{
if (this == sheet->getChildAtPosition(e.position))
{
// logIntValue("DateButton::onMouseMove befor MouseMoveOverDate() XXXXXXX- date value if ", this->getDate());
// MouseMoveOverDate();
}
}
// WindowEventArgs args(this);
// fireEvent(EventDateMouseMove, e);
}
else if (d_segmentPushed && !d_dragMoving)
{
//initDragMoving();
d_dragMoving = true;
logMsg("entering initDragMoving");
}
e.handled = true;
}
/*************************************************************************
handle mouse button down.
*************************************************************************/
void DateButton::onMouseButtonDown(MouseEventArgs& e)
{
#ifdef DEBUG
// logMsg("DateButton::onMouseButtonDown");
#endif
// base class processing
ButtonBase::onMouseButtonDown(e);
// select
if (e.button == LeftButton)
{
Window* sheet = System::getSingleton().getGUISheet();
if (sheet != NULL)
{
if (this == sheet->getChildAtPosition(e.position))
{
#ifdef DEBUG
logIntValue("DateButton::onMouseButtonDown bef onselected() , date is ", this->getDate());
#endif
d_syskeys = e.sysKeys;
// onSelected();
}
}
}
// drag start
if (e.button == LeftButton)
{
// ensure all inputs come to us for now
if (captureInput())
{
// get position of mouse as co-ordinates local to this window.
Point localPos(screenToWindow(e.position));
if (getMetricsMode() == Relative)
{
localPos = relativeToAbsolute(localPos);
}
// store drag point for possible sizing or moving operation.
d_dragPoint = localPos;
d_segmentPushed = true;
}
}
e.handled = true;
}
I am able to get proper nodes on for the start node and for the end node and not for inbetween nodes.
Pl. let me know how to get the child instance which are being traversed on drag.
Pl help me out and I am stuck up.
regards
krithiga
Below is the code snippet.
/*************************************************************************
handle mouse move
*************************************************************************/
void DateButton::onMouseMove(MouseEventArgs& e)
{
static int num;
// ButtonBase::onMouseMove(e);
Window::onMouseMove(e);
Window* sheet = System::getSingleton().getGUISheet();
#ifdef DEBUG
this == sheet->getChildAtPosition(e.position);
// logIntValue("DateButton::onMouseMove from onMouseMove begin - date value if ", this->getDate());
#endif
// convert mouse position to something local
Point localMousePos(screenToWindow(e.position));
if (getMetricsMode() == Relative)
{
localMousePos = relativeToAbsolute(localMousePos);
}
#ifdef DEBUG
this == sheet->getChildAtPosition(e.position);
//logIntValue("DateButton::onMouseMove after localMousePos - date value if ", this->getDate());
#endif
if (d_dragMoving)
{
if (sheet != NULL)
{
if (this == sheet->getChildAtPosition(e.position))
{
// logIntValue("DateButton::onMouseMove befor MouseMoveOverDate() XXXXXXX- date value if ", this->getDate());
// MouseMoveOverDate();
}
}
// WindowEventArgs args(this);
// fireEvent(EventDateMouseMove, e);
}
else if (d_segmentPushed && !d_dragMoving)
{
//initDragMoving();
d_dragMoving = true;
logMsg("entering initDragMoving");
}
e.handled = true;
}
/*************************************************************************
handle mouse button down.
*************************************************************************/
void DateButton::onMouseButtonDown(MouseEventArgs& e)
{
#ifdef DEBUG
// logMsg("DateButton::onMouseButtonDown");
#endif
// base class processing
ButtonBase::onMouseButtonDown(e);
// select
if (e.button == LeftButton)
{
Window* sheet = System::getSingleton().getGUISheet();
if (sheet != NULL)
{
if (this == sheet->getChildAtPosition(e.position))
{
#ifdef DEBUG
logIntValue("DateButton::onMouseButtonDown bef onselected() , date is ", this->getDate());
#endif
d_syskeys = e.sysKeys;
// onSelected();
}
}
}
// drag start
if (e.button == LeftButton)
{
// ensure all inputs come to us for now
if (captureInput())
{
// get position of mouse as co-ordinates local to this window.
Point localPos(screenToWindow(e.position));
if (getMetricsMode() == Relative)
{
localPos = relativeToAbsolute(localPos);
}
// store drag point for possible sizing or moving operation.
d_dragPoint = localPos;
d_segmentPushed = true;
}
}
e.handled = true;
}
I am able to get proper nodes on for the start node and for the end node and not for inbetween nodes.
Pl. let me know how to get the child instance which are being traversed on drag.
Pl help me out and I am stuck up.
regards
krithiga