本文整理汇总了C++中WidgetPtr::GetParent方法的典型用法代码示例。如果您正苦于以下问题:C++ WidgetPtr::GetParent方法的具体用法?C++ WidgetPtr::GetParent怎么用?C++ WidgetPtr::GetParent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WidgetPtr
的用法示例。
在下文中一共展示了WidgetPtr::GetParent方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handleModalFocusReleased
void Gui::handleModalFocusReleased()
{
// Check all widgets below the mouse to see if they are
// present in the "widget with mouse" queue. If a widget
// is not then it should be added and an entered event should
// be sent to it.
WidgetPtr widget = GetMouseEventSource(mLastMouseX, mLastMouseY);
WidgetPtr parent = widget;
while (parent != NULL)
{
parent = widget->GetParent();
// Check if the widget is present in the "widget with mouse" queue.
bool widgetIsPresentInQueue = false;
std::deque<WidgetPtr>::iterator iter;
for (iter = mWidgetWithMouseQueue.begin();
iter != mWidgetWithMouseQueue.end();
iter++)
{
if (*iter == widget)
{
widgetIsPresentInQueue = true;
break;
}
}
// Widget is not present, send an entered event and add
// it to the "widget with mouse" queue.
if (!widgetIsPresentInQueue
&& Widget::widgetExists(widget))
{
distributeMouseEvent(widget,
MouseEvent::ENTERED,
mLastMousePressButton,
mLastMouseX,
mLastMouseY,
false,
true);
mWidgetWithMouseQueue.push_front(widget);
}
WidgetPtr swap = widget;
widget = parent;
parent = swap->GetParent();
}
}
示例2: distributeMouseEvent
void Gui::distributeMouseEvent(WidgetPtr source,
int type,
int button,
int x,
int y,
bool force,
bool toSourceOnly)
{
WidgetPtr parent = source;
WidgetPtr widget = source;
if (mFocusHandler->GetModalFocused()
&& !widget->isModalFocused()
&& !force)
{
return;
}
if (mFocusHandler->GetModalMouseInputFocused()
&& !widget->isModalMouseInputFocused()
&& !force)
{
return;
}
MouseEvent mouseEvent(source,
mShiftPressed,
mControlPressed,
mAltPressed,
mMetaPressed,
type,
button,
x,
y,
mClickCount);
while (parent != NULL)
{
// If the widget has been removed due to input
// cancel the distribution.
if (!Widget::widgetExists(widget))
{
break;
}
parent = (WidgetPtr)widget->GetParent();
if (widget->IsEnabled() || force)
{
int widgetX, widgetY;
widget->getAbsolutePosition(widgetX, widgetY);
mouseEvent.mX = x - widgetX;
mouseEvent.mY = y - widgetY;
std::list<MouseListener*> mouseListeners = widget->_getMouseListeners();
// Send the event to all mouse listeners of the widget.
for (std::list<MouseListener*>::iterator it = mouseListeners.begin();
it != mouseListeners.end();
++it)
{
switch (mouseEvent.getType())
{
case MouseEvent::ENTERED:
(*it)->MouseEntered(mouseEvent);
break;
case MouseEvent::EXITED:
(*it)->MouseExited(mouseEvent);
break;
case MouseEvent::MOVED:
(*it)->mouseMoved(mouseEvent);
break;
case MouseEvent::PRESSED:
(*it)->mousePressed(mouseEvent);
break;
case MouseEvent::RELEASED:
(*it)->mouseReleased(mouseEvent);
break;
case MouseEvent::WHEEL_MOVED_UP:
(*it)->mouseWheelMovedUp(mouseEvent);
break;
case MouseEvent::WHEEL_MOVED_DOWN:
(*it)->mouseWheelMovedDown(mouseEvent);
break;
case MouseEvent::DRAGGED:
(*it)->mouseDragged(mouseEvent);
break;
case MouseEvent::CLICKED:
(*it)->mouseClicked(mouseEvent);
break;
default:
throw GCN_EXCEPTION("Unknown mouse event type.");
}
}
if (toSourceOnly)
{
break;
}
//.........这里部分代码省略.........
示例3: distributeKeyEvent
void Gui::distributeKeyEvent(KeyEvent& keyEvent)
{
WidgetPtr parent = keyEvent.GetSource();
WidgetPtr widget = keyEvent.GetSource();
if (mFocusHandler->GetModalFocused() != NULL
&& !widget->isModalFocused())
{
return;
}
if (mFocusHandler->GetModalMouseInputFocused() != NULL
&& !widget->isModalMouseInputFocused())
{
return;
}
while (parent != NULL)
{
// If the widget has been removed due to input
// cancel the distribution.
if (!Widget::widgetExists(widget))
{
break;
}
parent = widget->GetParent();
if (widget->IsEnabled())
{
std::list<KeyListener*> keyListeners = widget->_getKeyListeners();
// Send the event to all key listeners of the source widget.
for (std::list<KeyListener*>::iterator it = keyListeners.begin();
it != keyListeners.end();
++it)
{
switch (keyEvent.getType())
{
case KeyEvent::PRESSED:
(*it)->keyPressed(keyEvent);
break;
case KeyEvent::RELEASED:
(*it)->keyReleased(keyEvent);
break;
default:
throw GCN_EXCEPTION("Unknown key event type.");
}
}
}
WidgetPtr swap = widget;
widget = parent;
parent = (WidgetPtr)swap->GetParent();
// If a non modal focused widget has been reach
// and we have modal focus cancel the distribution.
if (mFocusHandler->GetModalFocused() != NULL
&& !widget->isModalFocused())
{
break;
}
}
}
示例4: handleMouseMoved
//.........这里部分代码省略.........
mouseInput.getY(),
true,
true);
mClickCount = 1;
mLastMousePressTimeStamp = 0;
mWidgetWithMouseQueue.erase(iter);
break;
}
}
iterations++;
}
widgetWithMouseQueueCheckDone = iterations == mWidgetWithMouseQueue.size();
}
// Check all widgets below the mouse to see if they are
// present in the "widget with mouse" queue. If a widget
// is not then it should be added and an entered event should
// be sent to it.
WidgetPtr parent = GetMouseEventSource(mouseInput.getX(), mouseInput.getY());
WidgetPtr widget = parent;
// If a widget has modal mouse input focus then it will
// always be returned from getMouseEventSource, but we only wan't to send
// mouse entered events if the mouse has actually entered the widget with
// modal mouse input focus, hence we need to check if that's the case. If
// it's not we should simply ignore to send any mouse entered events.
if (mFocusHandler->GetModalMouseInputFocused()
&& widget == mFocusHandler->GetModalMouseInputFocused()
&& Widget::widgetExists(widget))
{
int x, y;
widget->getAbsolutePosition(x, y);
if (x > mouseInput.getX()
|| y > mouseInput.getY()
|| x + widget->GetWidth() <= mouseInput.getX()
|| y + widget->GetHeight() <= mouseInput.getY())
{
parent.reset();
}
}
while (parent)
{
parent = widget->GetParent();
// Check if the widget is present in the "widget with mouse" queue.
bool widgetIsPresentInQueue = false;
std::deque<WidgetPtr>::iterator iter;
for (iter = mWidgetWithMouseQueue.begin();
iter != mWidgetWithMouseQueue.end();
iter++)
{
if (*iter == widget)
{
widgetIsPresentInQueue = true;
break;
}
}
// Widget is not present, send an entered event and add
// it to the "widget with mouse" queue.
if (!widgetIsPresentInQueue
&& Widget::widgetExists(widget))
{
distributeMouseEvent(widget,
MouseEvent::ENTERED,
mouseInput.getButton(),
mouseInput.getX(),
mouseInput.getY(),
true,
true);
mWidgetWithMouseQueue.push_front(widget);
}
WidgetPtr swap = widget;
widget = parent;
parent = (WidgetPtr)swap->GetParent();
}
if (mFocusHandler->GetDraggedWidget())
{
distributeMouseEvent(mFocusHandler->GetDraggedWidget(),
MouseEvent::DRAGGED,
mLastMouseDragButton,
mouseInput.getX(),
mouseInput.getY());
}
else
{
WidgetPtr sourceWidget = GetMouseEventSource(mouseInput.getX(), mouseInput.getY());
distributeMouseEvent(sourceWidget,
MouseEvent::MOVED,
mouseInput.getButton(),
mouseInput.getX(),
mouseInput.getY());
}
}