Ignore mouse clicks that were made directly on ribbon toolbar instead of child elements
This commit is contained in:
parent
399b89730d
commit
8a579d9542
@ -821,7 +821,10 @@ EventPropagation EventHandler::onGUIEvent(const SEvent& event)
|
|||||||
return EVENT_BLOCK;
|
return EVENT_BLOCK;
|
||||||
}
|
}
|
||||||
|
|
||||||
w->onClick();
|
EventPropagation result = w->onClick();
|
||||||
|
|
||||||
|
if (result == EVENT_BLOCK)
|
||||||
|
return result;
|
||||||
|
|
||||||
// These events are only triggered by mouse (or so I hope)
|
// These events are only triggered by mouse (or so I hope)
|
||||||
// The player that owns the mouser receives "game master" priviledges
|
// The player that owns the mouser receives "game master" priviledges
|
||||||
|
@ -674,7 +674,7 @@ namespace GUIEngine
|
|||||||
bool ok() const { return (m_magic_number == 0xCAFEC001); }
|
bool ok() const { return (m_magic_number == 0xCAFEC001); }
|
||||||
|
|
||||||
/** Gets called when the widget is active and got clicked. (Only works for button widgets for now.) */
|
/** Gets called when the widget is active and got clicked. (Only works for button widgets for now.) */
|
||||||
virtual void onClick() { }
|
virtual EventPropagation onClick() { return EVENT_LET; }
|
||||||
virtual irr::core::dimension2di getDimension() const { return irr::core::dimension2di(m_w, m_h); }
|
virtual irr::core::dimension2di getDimension() const { return irr::core::dimension2di(m_w, m_h); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -112,10 +112,12 @@ void RatingBarWidget::setStepValuesByMouse(const core::position2di & mouse_posit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RatingBarWidget::onClick()
|
EventPropagation RatingBarWidget::onClick()
|
||||||
{
|
{
|
||||||
if(m_allow_voting)
|
if(m_allow_voting)
|
||||||
m_rating = m_hover_rating;
|
m_rating = m_hover_rating;
|
||||||
|
|
||||||
|
return EVENT_LET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ namespace GUIEngine
|
|||||||
|
|
||||||
void setStepValuesByMouse(const core::position2di & mouse_position, const core::recti & stars_rect);
|
void setStepValuesByMouse(const core::position2di & mouse_position, const core::recti & stars_rect);
|
||||||
|
|
||||||
virtual void onClick();
|
virtual EventPropagation onClick();
|
||||||
|
|
||||||
void allowVoting() { m_allow_voting = true; }
|
void allowVoting() { m_allow_voting = true; }
|
||||||
};
|
};
|
||||||
|
@ -779,6 +779,14 @@ EventPropagation RibbonWidget::mouseHovered(Widget* child,
|
|||||||
return EVENT_BLOCK;
|
return EVENT_BLOCK;
|
||||||
} // mouseHovered
|
} // mouseHovered
|
||||||
|
|
||||||
|
EventPropagation RibbonWidget::onClick()
|
||||||
|
{
|
||||||
|
if (m_ribbon_type == RIBBON_TOOLBAR)
|
||||||
|
return EVENT_BLOCK;
|
||||||
|
|
||||||
|
return EVENT_LET;
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
const std::string& RibbonWidget::getSelectionIDString(const int playerID)
|
const std::string& RibbonWidget::getSelectionIDString(const int playerID)
|
||||||
{
|
{
|
||||||
|
@ -92,6 +92,8 @@ namespace GUIEngine
|
|||||||
virtual EventPropagation focused(const int playerID) OVERRIDE;
|
virtual EventPropagation focused(const int playerID) OVERRIDE;
|
||||||
virtual void unfocused(const int playerID, Widget* new_focus) OVERRIDE;
|
virtual void unfocused(const int playerID, Widget* new_focus) OVERRIDE;
|
||||||
|
|
||||||
|
virtual EventPropagation onClick() OVERRIDE;
|
||||||
|
|
||||||
PtrVector<irr::gui::IGUIStaticText, REF> m_labels;
|
PtrVector<irr::gui::IGUIStaticText, REF> m_labels;
|
||||||
|
|
||||||
IRibbonListener* m_listener;
|
IRibbonListener* m_listener;
|
||||||
|
@ -457,13 +457,13 @@ void SpinnerWidget::setCustomText(const core::stringw& text)
|
|||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SpinnerWidget::onClick()
|
EventPropagation SpinnerWidget::onClick()
|
||||||
{
|
{
|
||||||
if (m_children[1].m_deactivated ||
|
if (m_children[1].m_deactivated ||
|
||||||
m_children[1].m_properties[PROP_ID] != "spinnerbody" ||
|
m_children[1].m_properties[PROP_ID] != "spinnerbody" ||
|
||||||
!isGauge())
|
!isGauge())
|
||||||
{
|
{
|
||||||
return;
|
return EVENT_LET;
|
||||||
}
|
}
|
||||||
|
|
||||||
const core::position2di mouse_position
|
const core::position2di mouse_position
|
||||||
@ -487,6 +487,8 @@ void SpinnerWidget::onClick()
|
|||||||
|
|
||||||
setValue(new_value);
|
setValue(new_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return EVENT_LET;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
@ -96,7 +96,7 @@ namespace GUIEngine
|
|||||||
virtual EventPropagation leftPressed(const int playerID);
|
virtual EventPropagation leftPressed(const int playerID);
|
||||||
|
|
||||||
/** \brief implementing method from base class Widget */
|
/** \brief implementing method from base class Widget */
|
||||||
virtual void onClick();
|
virtual EventPropagation onClick();
|
||||||
|
|
||||||
/** When inferring widget size from its label length, this method will be called to
|
/** When inferring widget size from its label length, this method will be called to
|
||||||
* if/how much space must be added to the raw label's size for the widget to be large enough */
|
* if/how much space must be added to the raw label's size for the widget to be large enough */
|
||||||
|
Loading…
Reference in New Issue
Block a user