Awesome, everything works! I saw that parameter, but stupidly concluded I needed to pass in true to do what I wanted instead of false.
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts Menu
//doesnt fix it
theResizedWindow.setView(recalculatedDefaultView);
gui.draw()
//doesnt fix it
gui.setWindow(theResizedWindow);

void WidgetBase::f_callback(const tgui::Callback& callback)
{
if(callbackHook(callback))
{
}
else if(callback.trigger == tgui::Widget::WidgetCallbacks::MouseEntered)
{
f_MouseEntered();
}
else if(callback.trigger == tgui::Widget::WidgetCallbacks::MouseLeft)
{
f_MouseLeft();
}
else if(callback.trigger == tgui::ClickableWidget::LeftMouseClicked)
{
f_LeftMouseClicked();
}
else if(callback.trigger == tgui::ClickableWidget::LeftMousePressed)
{
f_LeftMousePressed();
}
else if(callback.trigger == tgui::ClickableWidget::LeftMouseReleased)
{
f_LeftMouseReleased();
}
}
void WidgetBase::f_MouseEntered()
{
sf::Packet pack;
mouseEnteredHook(pack);
m_io.event(EventType::MouseEntered, 0, pack);
}bool callbackHook(const tgui::Callback& callback);
void WidgetBase::f_assign(tgui::Widget* pWidget)
{
m_pWidget->bindCallbackEx(&WidgetBase::f_callback, this, 4095);
}
Quote from: texus on 21 October 2014, 10:21:03If you have multiple sfml and tgui folders you should remove them to make sure that you can't be using the wrong one accidentally. And make sure that all dll files are coming from these folders.
Quote from: texus on 21 October 2014, 10:21:03There must still be a configuration mistake on his pc then.


if (rEvent.key.code == sf::Keyboard::F1)
{
m_pCPT->setState(PlayerState::Editing);
}
// somewhere else in the code:
else if(m_pCPT->getState() == PlayerState::Editing)
{
if (rEvent.type == sf::Event::MouseButtonPressed)
{
tgui::Widget::Ptr widget = f_MouseOnWhichWidget(rEvent.mouseButton.x, rEvent.mouseButton.y, m_rGui.getWidgets());
if(widget != nullptr)
{
if(widget->getWidgetType() == tgui::WidgetTypes::Type_Panel)
{
if(f_MouseOnWhichWidget(rEvent.mouseButton.x, rEvent.mouseButton.y, tgui::Panel::Ptr(widget)->getWidgets()) == nullptr)
{
m_pDraggingWidget = widget;
m_pDraggingPosition = sf::Vector2f(rEvent.mouseButton.x, rEvent.mouseButton.y);
}
}
}
}
else if (rEvent.type == sf::Event::MouseButtonReleased)
{
m_pDraggingWidget = nullptr;
}
else if (rEvent.type == sf::Event::MouseMoved)
{
if (m_pDraggingWidget != nullptr)
{
m_pDraggingWidget->setPosition(m_pDraggingWidget->getPosition().x + rEvent.mouseMove.x - m_pDraggingPosition.x,
m_pDraggingWidget->getPosition().y + rEvent.mouseMove.y - m_pDraggingPosition.y);
m_pDraggingPosition = sf::Vector2f(rEvent.mouseMove.x, rEvent.mouseMove.y);
}
}
}
tgui::Widget::Ptr MouseOnWhichWidget(float x, float y, std::vector<tgui::Widget::Ptr>& widgets)
{
for (std::vector<tgui::Widget::Ptr>::reverse_iterator it = widgets.rbegin(); it != widgets.rend(); ++it)
if (((*it)->isVisible()) && ((*it)->isEnabled()) && ((*it)->mouseOnWidget(x, y)))
return *it;
return nullptr;
};
Glad you found a bug before it caused any trouble! if (rEvent.type == sf::Event::MouseButtonPressed)
{
tgui::Widget::Ptr widget = MouseOnWhichWidget(rEvent.mouseButton.x, rEvent.mouseButton.y, m_rGui.getWidgets());
if(widget != nullptr)//======changed this
{
if(widget->getWidgetType() == tgui::WidgetTypes::Type_Panel)//======and changed this
{
if(MouseOnWhichWidget(rEvent.mouseButton.x, rEvent.mouseButton.y, tgui::Panel::Ptr(widget)->getWidgets()) == nullptr)
{
m_pDraggingWidget = widget;
m_pDraggingPosition = sf::Vector2f(rEvent.mouseButton.x, rEvent.mouseButton.y);
}
}
}
}tgui::Widget::Ptr MouseOnWhichWidget(float x, float y, std::vector<tgui::Widget::Ptr>& widgets)
{
bool widgetFound = false;
tgui::Widget::Ptr widget = nullptr;
// Loop through all widgets
for (std::vector<tgui::Widget::Ptr>::reverse_iterator it = widgets.rbegin(); it != widgets.rend(); ++it)
{
if (((*it)->isVisible()) && ((*it)->isEnabled()))
{
if (widgetFound == false)// <---why have this? read more down
{
if ((*it)->mouseOnWidget(x, y))
{
widget = *it;
widgetFound = true;// <---since we already found a widget, why keep going, why not break out of loop; ?
}
}
else
(*it)->mouseNotOnWidget();
}
}
return widget;
};
menu->bindCallbackEx(std::bind(&MyClass::function, &mc), tgui::MenuBar::MenuItemClicked);menu->bindCallbackEx(&MyClass::function, &mc, tgui::MenuBar::MenuItemClicked); tgui::MenuBar::Ptr menu(gui);
menu->load(THEME_CONFIG_FILE);
menu->setSize(window.getSize().x, 20);
menu->addMenu("File");
menu->addMenuItem("File", "Load");
menu->addMenuItem("File", "Save");
menu->addMenuItem("File", "Exit");
menu->bindCallback(&sf::Window::close, ptr, tgui::MenuBar::MenuItemClicked);
.
I'm pretty far along with my game, ill post it here, and other places, and give credit!Entity_Human
{
targetName = "player_1"
health = 100
}
Entity_Human
{
targetName = "enemy_1"
health = 100
outputs = {onHealth, <, 50, "enemy_1", setHealth, 0; onHealth, <, 50, "enemy_2", setHealth, 0; onHealth, <, 50, "button_1", disable}
}
Entity_Human
{
targetName = "enemy_2"
health = 130
}
Button
{
targetName = "enemy_2"
outputs = {onClicked, "enemy_1", setHealth, 500; onClicked, "enemy_2", setHealth, 300}
}
Slider
{
targetName = "enemy_2"
outputs = {onChanged, "enemy_1", setHealth, getData1}
}
class myButton : public IOBase, public tgui::Button //<---should that be tgui::Button::Ptr????
{
public:
void send()
{
otherThing->getTarget(target).recieve(message);
};
private:
Message message;
string target;
IOBase* target;
};myButtonInstancePtr->bindCallback(&myButton::send, &gui, tgui::Button::LeftMouseClicked);