From 1661e7596a2d9526b68a76047771d5c9fb1ee014 Mon Sep 17 00:00:00 2001 From: Christoph Schulz Date: Sat, 8 Dec 2018 19:45:56 +0100 Subject: [PATCH 1/2] Ignore deprecated "event was processed" because too many renderers fail to use it properly --- core/include/mmcore/view/RendererModule.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/include/mmcore/view/RendererModule.h b/core/include/mmcore/view/RendererModule.h index a26225c580..031c570a9f 100644 --- a/core/include/mmcore/view/RendererModule.h +++ b/core/include/mmcore/view/RendererModule.h @@ -82,7 +82,6 @@ template class MEGAMOLCORE_API RendererModule : public Module, public virtual bool OnMouseButton(MouseButton button, MouseButtonAction action, Modifiers mods) { MouseFlags mouseFlags; // Ugly mapping to deprecated functions (can be removed some day). - auto down = action == core::view::MouseButtonAction::PRESS; if (mods.test(core::view::Modifier::SHIFT)) { view::MouseFlagsSetFlag(mouseFlags, view::MOUSEFLAG_MODKEY_SHIFT_DOWN, true); } else if (mods.test(core::view::Modifier::CTRL)) { @@ -90,6 +89,7 @@ template class MEGAMOLCORE_API RendererModule : public Module, public } else if (mods.test(core::view::Modifier::ALT)) { view::MouseFlagsSetFlag(mouseFlags, view::MOUSEFLAG_MODKEY_ALT_DOWN, true); } + auto down = action == core::view::MouseButtonAction::PRESS; if (button == MouseButton::BUTTON_LEFT) { view::MouseFlagsSetFlag(mouseFlags, view::MOUSEFLAG_BUTTON_LEFT_DOWN, down); } else if (button == MouseButton::BUTTON_RIGHT) { @@ -101,7 +101,8 @@ template class MEGAMOLCORE_API RendererModule : public Module, public // - Could be "world space" (see View2D/View3D) instead of window space! // - If so, then provide a freaking method in the Call to the the transformation instead of passing around black magic! this->MouseEvent(lastX, lastY, mouseFlags); - return down; + // Ignore deprecated "event was processed" flag because too many renderers fail to use it properly + return false; } virtual bool OnMouseMove(double x, double y) { @@ -109,6 +110,7 @@ template class MEGAMOLCORE_API RendererModule : public Module, public this->lastX = x; this->lastY = y; this->MouseEvent(x, y, 0); + // Ignore deprecated "event was processed" flag because too many renderers fail to use it properly return false; } From cc23578321f3eadc5b5915cad680d17fc80c9f19 Mon Sep 17 00:00:00 2001 From: Christoph Schulz Date: Sat, 8 Dec 2018 21:04:07 +0100 Subject: [PATCH 2/2] Set a dummy bounding box --- plugins/gui/src/GUIRenderer.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/plugins/gui/src/GUIRenderer.cpp b/plugins/gui/src/GUIRenderer.cpp index a2c8b26f31..6b0dff586e 100644 --- a/plugins/gui/src/GUIRenderer.cpp +++ b/plugins/gui/src/GUIRenderer.cpp @@ -155,14 +155,30 @@ template void GUIRenderer::drawMainMenu() { #endif } +template <> +bool GUIRenderer::GetExtents(core::view::CallRender2D& call) { + auto* cr = this->decoratedRendererSlot.CallAs(); + if (cr != NULL) { + (*cr) = call; + if ((*cr)(core::view::AbstractCallRender::FnGetExtents)) { + call = (*cr); + } + } else { + call.SetBoundingBox(vislib::math::Rectangle(0, 1, 1, 0)); + } + return true; +} -template bool GUIRenderer::GetExtents(C& call) { - auto* cr = this->decoratedRendererSlot.CallAs(); +template <> +bool GUIRenderer::GetExtents(core::view::CallRender3D& call) { + auto* cr = this->decoratedRendererSlot.CallAs(); if (cr != NULL) { (*cr) = call; if ((*cr)(core::view::AbstractCallRender::FnGetExtents)) { call = (*cr); } + } else { + // TODO: set dummy bounding box? } return true; }