本文整理汇总了C++中mygui::Widget::getParent方法的典型用法代码示例。如果您正苦于以下问题:C++ Widget::getParent方法的具体用法?C++ Widget::getParent怎么用?C++ Widget::getParent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mygui::Widget
的用法示例。
在下文中一共展示了Widget::getParent方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: selectWidget
void WidgetSelectorManager::selectWidget(const MyGUI::IntPoint& _mousePosition)
{
if (mLastClickPoint != _mousePosition)
{
mSelectDepth = 0;
mLastClickPoint = _mousePosition;
}
// здесь кликать вглубь
MyGUI::Widget* item = getTopWidget(_mousePosition);
if (nullptr != item)
{
// find widget registered as container
while ((nullptr == EditorWidgets::getInstance().find(item)) && (nullptr != item))
item = item->getParent();
MyGUI::Widget* oldItem = item;
// try to selectin depth
size_t depth = mSelectDepth;
while (depth && (nullptr != item))
{
item = item->getParent();
while ((nullptr == EditorWidgets::getInstance().find(item)) && (nullptr != item))
item = item->getParent();
MYGUI_ASSERT(depth != 0, "depth != 0");
depth--;
}
if (nullptr == item)
{
item = oldItem;
mSelectDepth = 0;
}
// found widget
if (nullptr != item)
{
depth = mSelectDepth;
WidgetSelectorManager::getInstance().setSelectedWidget(item);
mSelectDepth = depth + 1;
}
else
{
WidgetSelectorManager::getInstance().setSelectedWidget(nullptr);
}
}
else
{
WidgetSelectorManager::getInstance().setSelectedWidget(nullptr);
}
}
示例2: onFrame
void NoDrop::onFrame(float dt)
{
if (!mWidget)
return;
MyGUI::IntPoint mousePos = MyGUI::InputManager::getInstance().getMousePosition();
if (mDrag->mIsOnDragAndDrop)
{
MyGUI::Widget* focus = MyGUI::InputManager::getInstance().getMouseFocusWidget();
while (focus && focus != mWidget)
focus = focus->getParent();
if (focus == mWidget)
mTransparent = true;
}
if (!mWidget->getAbsoluteCoord().inside(mousePos))
mTransparent = false;
if (mTransparent)
{
mWidget->setNeedMouseFocus(false); // Allow click-through
setAlpha(std::max(0.13f, mWidget->getAlpha() - dt*5));
}
else
{
mWidget->setNeedMouseFocus(true);
setAlpha(std::min(1.0f, mWidget->getAlpha() + dt*5));
}
}
示例3: moveNewWidget
void WidgetCreatorManager::moveNewWidget(const MyGUI::IntPoint& _point)
{
if (mNewWidget == nullptr)
{
// тип виджета может отсутсвовать
if (!MyGUI::WidgetManager::getInstance().isFactoryExist(mWidgetType))
return;
// выделяем верний виджет
if (!mPopupMode)
WidgetSelectorManager::getInstance().selectWidget(mStartPoint);
MyGUI::Widget* parent = WidgetSelectorManager::getInstance().getSelectedWidget();
// пока не найдем ближайшего над нами способного быть родителем
while (parent != nullptr && !WidgetTypes::getInstance().findWidgetStyle(parent->getTypeName())->parent)
parent = parent->getParent();
if (!WidgetTypes::getInstance().findWidgetStyle(mWidgetType)->child)
parent = nullptr;
if (parent != nullptr)
mNewWidget = parent->createWidgetT(
mPopupMode ? MyGUI::WidgetStyle::Popup : MyGUI::WidgetStyle::Child,
mWidgetType,
EditorWidgets::getInstance().getSkinReplace(mWidgetSkin),
MyGUI::IntCoord(),
MyGUI::Align::Default,
DEFAULT_EDITOR_LAYER);
else
mNewWidget = MyGUI::Gui::getInstance().createWidgetT(
mWidgetType,
EditorWidgets::getInstance().getSkinReplace(mWidgetSkin),
MyGUI::IntCoord(),
MyGUI::Align::Default,
DEFAULT_EDITOR_LAYER);
// переводим старт поинт в координаты отца
if (parent != nullptr && !mNewWidget->isRootWidget())
{
if (parent->getClientWidget())
mStartPoint -= parent->getClientWidget()->getAbsolutePosition();
else
mStartPoint -= parent->getAbsolutePosition();
}
if (!MyGUI::InputManager::getInstance().isShiftPressed())
{
mStartPoint.left = Grid::getInstance().toGrid(mStartPoint.left);
mStartPoint.top = Grid::getInstance().toGrid(mStartPoint.top);
}
}
MyGUI::IntCoord coord = getCoordNewWidget(_point);
mNewWidget->setCoord(coord);
eventChangeSelector(true, mNewWidget->getAbsoluteCoord());
}
示例4: step_attach_widget
void step_attach_widget()
{
MyGUI::Widget* widget1 = get_random(all_widgets);
MyGUI::Widget* widget2 = get_random(all_widgets);
if (!widget1 || !widget2) return;
MyGUI::Widget* test = widget1;
do
{
if (test == widget2) return;
test = test->getParent();
}
while (test);
widget2->attachToWidget(widget1, get_type(), get_layer());
test_widgets();
}
示例5: setVisible
void WindowBase::setVisible(bool visible)
{
bool wasVisible = mMainWidget->getVisible();
mMainWidget->setVisible(visible);
if (visible)
onOpen();
else if (wasVisible)
onClose();
// This is needed as invisible widgets can retain key focus.
// Remove for MyGUI 3.2.2
if (!visible)
{
MyGUI::Widget* keyFocus = MyGUI::InputManager::getInstance().getKeyFocusWidget();
while (keyFocus != mMainWidget && keyFocus != nullptr)
keyFocus = keyFocus->getParent();
if (keyFocus == mMainWidget)
MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(nullptr);
}
}
示例6: injectMousePress
//===================================================================================
void EditorState::injectMousePress(int _absx, int _absy, MyGUI::MouseButton _id)
{
if (testMode)
{
return base::BaseManager::injectMousePress(_absx, _absy, _id);
}
if (MyGUI::InputManager::getInstance().isModalAny())
{
// if we have modal widgets we can't select any widget
base::BaseManager::injectMousePress(_absx, _absy, _id);
return;
}
// align to grid if shift not pressed
int x1, y1;
if (MyGUI::InputManager::getInstance().isShiftPressed() == false)
{
x1 = toGrid(_absx);
y1 = toGrid(_absy);
}
else
{
x1 = _absx;
y1 = _absy;
}
// юбилейный комит =)
mWidgetsWindow->startNewWidget(x1, y1, _id);
// это чтобы можно было двигать пр¤моугольник у невидимых виджето (или виджетов за границами)
//MyGUI::LayerItemInfoPtr rootItem = nullptr;
//MyGUI::Widget* itemWithRect = static_cast<MyGUI::Widget*>(MyGUI::LayerManager::getInstance().findWidgetItem(_absx, _absy, rootItem));
// не стал это доделывать, т.к. неоднозначность выбора виджета получаетс¤, если кто скажет как выбирать - сделаю
MyGUI::Widget* item = MyGUI::LayerManager::getInstance().getWidgetFromPoint(_absx, _absy);
// не убираем пр¤моугольник если нажали на его раст¤гивалку
if (item && (item->getParent() != mPropertiesPanelView->getWidgetRectangle()))
{
// чтобы пр¤моугольник не мешалс¤
mPropertiesPanelView->getWidgetRectangle()->setVisible(false);
item = MyGUI::LayerManager::getInstance().getWidgetFromPoint(_absx, _absy);
}
if (nullptr != item)
{
// find widget registered as container
while ((nullptr == ew->find(item)) && (nullptr != item)) item = item->getParent();
MyGUI::Widget* oldItem = item;
// try to selectin depth
int depth = selectDepth;
while (depth && (nullptr != item))
{
item = item->getParent();
while ((nullptr == ew->find(item)) && (nullptr != item)) item = item->getParent();
depth--;
}
if (nullptr == item)
{
item = oldItem;
selectDepth = 0;
}
// found widget
if (nullptr != item)
{
notifySelectWidget(item);
if (mWidgetsWindow->getCreatingStatus() != 1)
{
//FIXME
getGUI()->injectMouseMove(_absx, _absy, 0);// это чтобы сразу можно было тащить
}
}
//FIXME
getGUI()->injectMousePress(_absx, _absy, _id);
}
else
{
//FIXME
getGUI()->injectMousePress(_absx, _absy, _id);
notifySelectWidget(nullptr);
}
// вернем пр¤моугольник
if (current_widget && mWidgetsWindow->getCreatingStatus() == 0)
{
mPropertiesPanelView->getWidgetRectangle()->setVisible(true);
}
else if (mWidgetsWindow->getCreatingStatus())
{
mPropertiesPanelView->getWidgetRectangle()->setVisible(false);
}
//base::BaseManager::injectMousePress(_absx, _absy, _id);
}