Another tweak to the logic for releasing mouse capture into GLToolbar::on_mouse()
This commit is contained in:
parent
db21c67f18
commit
6bf0cf9466
2 changed files with 31 additions and 3 deletions
|
@ -157,7 +157,9 @@ GLToolbar::GLToolbar(GLToolbar::EType type)
|
||||||
#if ENABLE_SVG_ICONS
|
#if ENABLE_SVG_ICONS
|
||||||
, m_icons_texture_dirty(true)
|
, m_icons_texture_dirty(true)
|
||||||
#endif // ENABLE_SVG_ICONS
|
#endif // ENABLE_SVG_ICONS
|
||||||
, m_mouse_capture({ false, false, false, nullptr })
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
// , m_mouse_capture({ false, false, false, nullptr })
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
, m_tooltip("")
|
, m_tooltip("")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -410,12 +412,27 @@ bool GLToolbar::on_mouse(wxMouseEvent& evt, GLCanvas3D& parent)
|
||||||
bool processed = false;
|
bool processed = false;
|
||||||
|
|
||||||
// mouse anywhere
|
// mouse anywhere
|
||||||
if (evt.Moving())
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
if (evt.Moving() || evt.LeftDown() || evt.MiddleDown() || evt.RightDown() || evt.LeftDClick() || evt.RightDClick())
|
||||||
{
|
{
|
||||||
m_tooltip = update_hover_state(mouse_pos, parent);
|
|
||||||
if ((m_mouse_capture.parent != nullptr) && (m_mouse_capture.parent != &parent))
|
if ((m_mouse_capture.parent != nullptr) && (m_mouse_capture.parent != &parent))
|
||||||
|
{
|
||||||
m_mouse_capture.reset();
|
m_mouse_capture.reset();
|
||||||
|
std::cout << "Dragging restored by toolbar" << std::endl;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
|
||||||
|
if (evt.Moving())
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
// {
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
m_tooltip = update_hover_state(mouse_pos, parent);
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
// if ((m_mouse_capture.parent != nullptr) && (m_mouse_capture.parent != &parent))
|
||||||
|
// m_mouse_capture.reset();
|
||||||
|
// }
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
else if (evt.LeftUp())
|
else if (evt.LeftUp())
|
||||||
m_mouse_capture.left = false;
|
m_mouse_capture.left = false;
|
||||||
else if (evt.MiddleUp())
|
else if (evt.MiddleUp())
|
||||||
|
@ -423,7 +440,14 @@ bool GLToolbar::on_mouse(wxMouseEvent& evt, GLCanvas3D& parent)
|
||||||
else if (evt.RightUp())
|
else if (evt.RightUp())
|
||||||
m_mouse_capture.right = false;
|
m_mouse_capture.right = false;
|
||||||
else if (evt.Dragging() && m_mouse_capture.any())
|
else if (evt.Dragging() && m_mouse_capture.any())
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
{
|
||||||
|
std::cout << "Dragging prevented by toolbar" << std::endl;
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
processed = true;
|
processed = true;
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
}
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
|
||||||
int item_id = contains_mouse(mouse_pos, parent);
|
int item_id = contains_mouse(mouse_pos, parent);
|
||||||
if (item_id == -1)
|
if (item_id == -1)
|
||||||
|
|
|
@ -238,6 +238,10 @@ private:
|
||||||
bool right;
|
bool right;
|
||||||
GLCanvas3D* parent;
|
GLCanvas3D* parent;
|
||||||
|
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
MouseCapture() { reset(); }
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
|
||||||
bool any() const { return left || middle || right; }
|
bool any() const { return left || middle || right; }
|
||||||
void reset() { left = middle = right = false; parent = nullptr; }
|
void reset() { left = middle = right = false; parent = nullptr; }
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue