bool handleMouse(const osgGA::GUIEventAdapter& ea);
bool handleKeyboard(const osgGA::GUIEventAdapter& ea);
+
+ bool handleRootEvent(const sc::EventPtr& event);
+
void handleResize(int x, int y, int width, int height);
void handleMouseMode(SGPropertyNode* node);
return target_window->handleEvent(event);
}
else
- {
- // TODO somehow return if event has been consumed
- sc::Element::handleEvent(event);
- return false;
- }
+ return handleRootEvent(event);
}
//------------------------------------------------------------------------------
if( active_window )
return active_window->handleEvent(event);
+ else
+ return handleRootEvent(event);
+}
+//------------------------------------------------------------------------------
+bool DesktopGroup::handleRootEvent(const sc::EventPtr& event)
+{
+ event->default_prevented = false;
sc::Element::handleEvent(event);
- return false;
+
+ // preventDefault() on DesktopGroup stops propagation to internal event
+ // handling.
+ return event->default_prevented;
}
//------------------------------------------------------------------------------
.member("type", &sc::Event::getTypeString)
.member("target", &sc::Event::getTarget)
.member("currentTarget", &sc::Event::getCurrentTarget)
- .method("stopPropagation", &sc::Event::stopPropagation);
+ .member("defaultPrevented", &sc::Event::defaultPrevented)
+ .method("stopPropagation", &sc::Event::stopPropagation)
+ .method("preventDefault", &sc::Event::preventDefault);
NasalCustomEvent::init("canvas.CustomEvent")
.bases<NasalEvent>()