Mercurial > octave
diff libgui/graphics/Canvas.cc @ 22411:c69805d1fa64
maint: Style check C++ code in libgui/
* Backend.cc, Backend.h, BaseControl.cc, BaseControl.h, ButtonControl.cc,
ButtonControl.h, ButtonGroup.cc, ButtonGroup.h, Canvas.cc, Canvas.h,
CheckBoxControl.cc, CheckBoxControl.h, Container.cc, Container.h,
ContextMenu.cc, ContextMenu.h, EditControl.cc, EditControl.h, Figure.cc,
Figure.h, FigureWindow.cc, FigureWindow.h, GLCanvas.cc, GLCanvas.h,
GenericEventNotify.h, KeyMap.cc, KeyMap.h, ListBoxControl.cc, ListBoxControl.h,
Logger.cc, Logger.h, Menu.cc, Menu.h, MenuContainer.h, MouseModeActionGroup.cc,
MouseModeActionGroup.h, Object.cc, Object.h, ObjectFactory.cc, ObjectFactory.h,
ObjectProxy.cc, ObjectProxy.h, Panel.cc, Panel.h, PopupMenuControl.cc,
PopupMenuControl.h, PushButtonControl.cc, PushButtonControl.h, PushTool.cc,
PushTool.h, QtHandlesUtils.cc, QtHandlesUtils.h, RadioButtonControl.cc,
RadioButtonControl.h, SliderControl.cc, SliderControl.h, TextControl.cc,
TextControl.h, TextEdit.cc, TextEdit.h, ToggleButtonControl.cc,
ToggleButtonControl.h, ToggleTool.cc, ToggleTool.h, ToolBar.cc, ToolBar.h,
ToolBarButton.cc, ToolBarButton.h, __init_qt__.cc, __init_qt__.h,
annotation-dialog.cc, annotation-dialog.h, gl-select.cc, gl-select.h,
color-picker.cc, color-picker.h, dialog.h, documentation-dock-widget.cc,
documentation-dock-widget.h, files-dock-widget.cc, files-dock-widget.h,
find-files-dialog.h, find-files-model.cc, find-files-model.h,
history-dock-widget.cc, history-dock-widget.h, liboctgui-build-info.h,
liboctgui-build-info.in.cc, file-editor-interface.h, file-editor-tab.cc,
file-editor-tab.h, file-editor.cc, file-editor.h, find-dialog.cc,
find-dialog.h, marker.cc, marker.h, octave-qscintilla.cc, octave-qscintilla.h,
octave-txt-lexer.cc, octave-txt-lexer.h, main-window.cc, main-window.h,
octave-cmd.cc, octave-cmd.h, octave-dock-widget.cc, octave-dock-widget.h,
octave-gui.cc, octave-gui.h, octave-interpreter.cc, octave-interpreter.h,
octave-qt-link.cc, octave-qt-link.h, parser.cc, parser.h, webinfo.cc,
webinfo.h, resource-manager.cc, resource-manager.h, settings-dialog.cc,
settings-dialog.h, shortcut-manager.cc, shortcut-manager.h,
terminal-dock-widget.h, thread-manager.cc, thread-manager.h, welcome-wizard.cc,
welcome-wizard.h, workspace-model.cc, workspace-model.h, workspace-view.cc,
workspace-view.h:
Style check C++ code in libgui/
author | Rik <rik@octave.org> |
---|---|
date | Wed, 31 Aug 2016 12:20:46 -0700 |
parents | bac0d6f07a3e |
children | 8758addcf265 |
line wrap: on
line diff
--- a/libgui/graphics/Canvas.cc Wed Aug 31 14:37:33 2016 -0400 +++ b/libgui/graphics/Canvas.cc Wed Aug 31 12:20:46 2016 -0700 @@ -50,983 +50,985 @@ namespace QtHandles { -void -Canvas::redraw (bool sync) -{ - QWidget *w = qWidget (); + void + Canvas::redraw (bool sync) + { + QWidget *w = qWidget (); - if (w) - { - if (sync) - w->repaint (); - else - w->update (); - } -} - -void -Canvas::blockRedraw (bool block) -{ - m_redrawBlocked = block; -} - -void -Canvas::setCursor (MouseMode mode) -{ - QWidget *w = qWidget (); + if (w) + { + if (sync) + w->repaint (); + else + w->update (); + } + } - if (w) - { - static QCursor origCursor = w->cursor (); - - switch (mode) - { - case PanMode: - case RotateMode: - w->setCursor (Qt::OpenHandCursor); - break; + void + Canvas::blockRedraw (bool block) + { + m_redrawBlocked = block; + } - case ZoomInMode: - w->setCursor (QPixmap (":/images/zoom-in.png")); - break; + void + Canvas::setCursor (MouseMode mode) + { + QWidget *w = qWidget (); - case ZoomOutMode: - w->setCursor (QPixmap (":/images/zoom-out.png")); - break; - - default: - w->setCursor (origCursor); - break; - } - } -} + if (w) + { + static QCursor origCursor = w->cursor (); -void -Canvas::print (const QString& file_cmd, const QString& term) -{ - gh_manager::auto_lock lock; - graphics_object obj = gh_manager::get_object (m_handle); - - if (obj.valid_object ()) - { - graphics_object figObj (obj.get_ancestor ("figure")); + switch (mode) + { + case PanMode: + case RotateMode: + w->setCursor (Qt::OpenHandCursor); + break; - gl2ps_print (figObj, file_cmd.toStdString (), term.toStdString ()); - } -} + case ZoomInMode: + w->setCursor (QPixmap (":/images/zoom-in.png")); + break; -/* - Two updateCurrentPoint() routines are required: - 1) Used for QMouseEvents where cursor position data is in callback from Qt. - 2) Used for QKeyEvents where cursor position must be determined. -*/ -void -Canvas::updateCurrentPoint(const graphics_object& fig, - const graphics_object& obj, QMouseEvent* event) -{ - gh_manager::auto_lock lock; + case ZoomOutMode: + w->setCursor (QPixmap (":/images/zoom-out.png")); + break; - gh_manager::post_set (fig.get_handle (), "currentpoint", - Utils::figureCurrentPoint (fig, event), false); - - Matrix children = obj.get_properties ().get_children (); - octave_idx_type num_children = children.numel (); - - for (int i = 0; i < num_children; i++) - { - graphics_object childObj (gh_manager::get_object (children(i))); + default: + w->setCursor (origCursor); + break; + } + } + } - if (childObj.isa ("axes")) - { - axes::properties& ap = Utils::properties<axes> (childObj); - Matrix x_zlim = ap.get_transform_zlim (); - graphics_xform x_form = ap.get_transform (); + void + Canvas::print (const QString& file_cmd, const QString& term) + { + gh_manager::auto_lock lock; + graphics_object obj = gh_manager::get_object (m_handle); - ColumnVector p1 = x_form.untransform (event->x (), event->y (), - x_zlim(0)); - ColumnVector p2 = x_form.untransform (event->x (), event->y (), - x_zlim(1)); - - Matrix cp (2, 3, 0.0); - - cp(0,0) = p1(0); cp(0,1) = p1(1); cp(0,2) = p1(2); - cp(1,0) = p2(0); cp(1,1) = p2(1); cp(1,2) = p2(2); + if (obj.valid_object ()) + { + graphics_object figObj (obj.get_ancestor ("figure")); - gh_manager::post_set (childObj.get_handle (), "currentpoint", cp, - false); - } - } -} + gl2ps_print (figObj, file_cmd.toStdString (), term.toStdString ()); + } + } -void -Canvas::updateCurrentPoint(const graphics_object& fig, - const graphics_object& obj) -{ - gh_manager::auto_lock lock; - - gh_manager::post_set (fig.get_handle (), "currentpoint", - Utils::figureCurrentPoint (fig), false); - - Matrix children = obj.get_properties ().get_children (); - octave_idx_type num_children = children.numel (); - - for (int i = 0; i < num_children; i++) - { - graphics_object childObj (gh_manager::get_object (children(i))); + /* + Two updateCurrentPoint() routines are required: + 1) Used for QMouseEvents where cursor position data is in callback from Qt. + 2) Used for QKeyEvents where cursor position must be determined. + */ + void + Canvas::updateCurrentPoint(const graphics_object& fig, + const graphics_object& obj, QMouseEvent* event) + { + gh_manager::auto_lock lock; - if (childObj.isa ("axes")) - { - // FIXME: QCursor::pos() may give inaccurate results with asynchronous - // window systems like X11 over ssh. - QWidget *w = qWidget (); - QPoint p = w->mapFromGlobal (QCursor::pos ()); - axes::properties& ap = Utils::properties<axes> (childObj); - Matrix x_zlim = ap.get_transform_zlim (); - graphics_xform x_form = ap.get_transform (); + gh_manager::post_set (fig.get_handle (), "currentpoint", + Utils::figureCurrentPoint (fig, event), false); - ColumnVector p1 = x_form.untransform (p.x (), p.y (), x_zlim(0)); - ColumnVector p2 = x_form.untransform (p.x (), p.y (), x_zlim(1)); + Matrix children = obj.get_properties ().get_children (); + octave_idx_type num_children = children.numel (); - Matrix cp (2, 3, 0.0); - - cp(0,0) = p1(0); cp(0,1) = p1(1); cp(0,2) = p1(2); - cp(1,0) = p2(0); cp(1,1) = p2(1); cp(1,2) = p2(2); + for (int i = 0; i < num_children; i++) + { + graphics_object childObj (gh_manager::get_object (children(i))); - gh_manager::post_set (childObj.get_handle (), "currentpoint", cp, - false); - } - } -} - -void -Canvas::annotation_callback (const octave_value_list& args) -{ - Ffeval (ovl ("annotation").append (args)); + if (childObj.isa ("axes")) + { + axes::properties& ap = Utils::properties<axes> (childObj); + Matrix x_zlim = ap.get_transform_zlim (); + graphics_xform x_form = ap.get_transform (); - redraw (); -} + ColumnVector p1 = x_form.untransform (event->x (), event->y (), + x_zlim(0)); + ColumnVector p2 = x_form.untransform (event->x (), event->y (), + x_zlim(1)); -void -Canvas::canvasToggleAxes (const graphics_handle& handle) -{ - gh_manager::auto_lock lock; - - graphics_object go = gh_manager::get_object (handle); + Matrix cp (2, 3, 0.0); - if (go.valid_object ()) - { - figure::properties& fp = Utils::properties<figure> (go); - - graphics_handle ah = fp.get_currentaxes (); - - graphics_object ax = gh_manager::get_object (ah); + cp(0,0) = p1(0); cp(0,1) = p1(1); cp(0,2) = p1(2); + cp(1,0) = p2(0); cp(1,1) = p2(1); cp(1,2) = p2(2); - if (ax.valid_object ()) - { - axes::properties& ap = Utils::properties<axes> (ax); - - if (ap.handlevisibility_is ("on")) - { - ap.set_visible (! ap.is_visible ()); + gh_manager::post_set (childObj.get_handle (), "currentpoint", cp, + false); + } + } + } - redraw (true); - } - } - } -} - -void -Canvas::canvasToggleGrid (const graphics_handle& handle) -{ - gh_manager::auto_lock lock; - - graphics_object go = gh_manager::get_object (handle); + void + Canvas::updateCurrentPoint(const graphics_object& fig, + const graphics_object& obj) + { + gh_manager::auto_lock lock; - if (go.valid_object ()) - { - figure::properties& fp = Utils::properties<figure> (go); - - graphics_handle ah = fp.get_currentaxes (); - - graphics_object ax = gh_manager::get_object (ah); + gh_manager::post_set (fig.get_handle (), "currentpoint", + Utils::figureCurrentPoint (fig), false); - if (ax.valid_object ()) - { - axes::properties& ap = Utils::properties<axes> (ax); + Matrix children = obj.get_properties ().get_children (); + octave_idx_type num_children = children.numel (); - std::string tmp; - - // If any grid is off, then turn them all on. If they are all - // on, then turn them off. + for (int i = 0; i < num_children; i++) + { + graphics_object childObj (gh_manager::get_object (children(i))); - std::string state = ((ap.get_xgrid () == "off" - || ap.get_ygrid () == "off" - || ap.get_zgrid () == "off") - ? "on" : "off"); - - ap.set_xgrid (state); - ap.set_ygrid (state); - ap.set_zgrid (state); + if (childObj.isa ("axes")) + { + // FIXME: QCursor::pos() may give inaccurate results with asynchronous + // window systems like X11 over ssh. + QWidget *w = qWidget (); + QPoint p = w->mapFromGlobal (QCursor::pos ()); + axes::properties& ap = Utils::properties<axes> (childObj); + Matrix x_zlim = ap.get_transform_zlim (); + graphics_xform x_form = ap.get_transform (); - redraw (true); - } - } -} - -static void -autoscale_axes (axes::properties& ap) -{ - ap.clear_zoom_stack (); - - ap.set_xlimmode ("auto"); - ap.set_ylimmode ("auto"); - ap.set_zlimmode ("auto"); -} + ColumnVector p1 = x_form.untransform (p.x (), p.y (), x_zlim(0)); + ColumnVector p2 = x_form.untransform (p.x (), p.y (), x_zlim(1)); -void -Canvas::canvasAutoAxes (const graphics_handle& handle) -{ - gh_manager::auto_lock lock; + Matrix cp (2, 3, 0.0); - graphics_object go = gh_manager::get_object (handle); - - if (go.valid_object ()) - { - figure::properties& fp = Utils::properties<figure> (go); - - graphics_handle ah = fp.get_currentaxes (); + cp(0,0) = p1(0); cp(0,1) = p1(1); cp(0,2) = p1(2); + cp(1,0) = p2(0); cp(1,1) = p2(1); cp(1,2) = p2(2); - graphics_object ax = gh_manager::get_object (ah); - - if (ax.valid_object ()) - { - axes::properties& ap = Utils::properties<axes> (ax); + gh_manager::post_set (childObj.get_handle (), "currentpoint", cp, + false); + } + } + } - autoscale_axes (ap); - - redraw (true); - } - } -} + void + Canvas::annotation_callback (const octave_value_list& args) + { + Ffeval (ovl ("annotation").append (args)); -void -Canvas::canvasPaintEvent (void) -{ - if (! m_redrawBlocked) - { - gh_manager::auto_lock lock; + redraw (); + } - draw (m_handle); + void + Canvas::canvasToggleAxes (const graphics_handle& handle) + { + gh_manager::auto_lock lock; - if ((m_mouseMode == ZoomInMode && m_mouseAxes.ok ()) || m_rectMode) - drawZoomBox (m_mouseAnchor, m_mouseCurrent); - } -} + graphics_object go = gh_manager::get_object (handle); -static bool -pan_enabled (const graphics_object figObj) -{ - // Getting pan mode property: - octave_value ov_pm - = Utils::properties<figure> (figObj).get___pan_mode__ (); + if (go.valid_object ()) + { + figure::properties& fp = Utils::properties<figure> (go); - octave_scalar_map pm = ov_pm.scalar_map_value (); - - return pm.contents ("Enable").string_value () == "on"; -} + graphics_handle ah = fp.get_currentaxes (); -static std::string -pan_mode (const graphics_object figObj) -{ - // Getting pan mode property: - octave_value ov_pm - = Utils::properties<figure> (figObj).get___pan_mode__ (); + graphics_object ax = gh_manager::get_object (ah); - octave_scalar_map pm = ov_pm.scalar_map_value (); - - return pm.contents ("Motion").string_value (); -} + if (ax.valid_object ()) + { + axes::properties& ap = Utils::properties<axes> (ax); -static bool -zoom_enabled (const graphics_object figObj) -{ - // Getting zoom mode property: - octave_value ov_zm - = Utils::properties<figure> (figObj).get___zoom_mode__ (); - - octave_scalar_map zm = ov_zm.scalar_map_value (); + if (ap.handlevisibility_is ("on")) + { + ap.set_visible (! ap.is_visible ()); - return zm.contents ("Enable").string_value () == "on"; -} - -static std::string -zoom_mode (const graphics_object figObj) -{ - // Getting zoom mode property: - octave_value ov_zm - = Utils::properties<figure> (figObj).get___zoom_mode__ (); + redraw (true); + } + } + } + } - octave_scalar_map zm = ov_zm.scalar_map_value (); - - return zm.contents ("Motion").string_value (); -} + void + Canvas::canvasToggleGrid (const graphics_handle& handle) + { + gh_manager::auto_lock lock; -void -Canvas::select_object (graphics_object obj, QMouseEvent* event, - graphics_object ¤tObj, graphics_object &axesObj, - bool axes_only) -{ - QList<graphics_object> axesList; - Matrix children = obj.get_properties ().get_all_children (); - octave_idx_type num_children = children.numel (); + graphics_object go = gh_manager::get_object (handle); - for (int i = 0; i < num_children; i++) - { - graphics_object childObj (gh_manager::get_object (children(i))); + if (go.valid_object ()) + { + figure::properties& fp = Utils::properties<figure> (go); + + graphics_handle ah = fp.get_currentaxes (); - if (childObj.isa ("axes")) - axesList.append (childObj); - else if (childObj.isa ("uicontrol") || childObj.isa ("uipanel") - || childObj.isa ("uibuttongroup")) - { - Matrix bb = childObj.get_properties ().get_boundingbox (false); - QRectF r (bb(0), bb(1), bb(2), bb(3)); + graphics_object ax = gh_manager::get_object (ah); - r.adjust (-5, -5, 5, 5); + if (ax.valid_object ()) + { + axes::properties& ap = Utils::properties<axes> (ax); + + std::string tmp; -#if (HAVE_QT4) - bool rect_contains_pos = r.contains (event->posF ()); -#else - bool rect_contains_pos = r.contains (event->localPos ()); -#endif - if (rect_contains_pos) - { - currentObj = childObj; - break; - } - } - } + // If any grid is off, then turn them all on. If they are all + // on, then turn them off. - if (axes_only) - { - QPoint pt = event->pos (); - - for (QList<graphics_object>::ConstIterator it = axesList.begin (); - it != axesList.end (); ++it) - { - const axes::properties& ap = - dynamic_cast<const axes::properties&> ((*it).get_properties ()); + std::string state = ((ap.get_xgrid () == "off" + || ap.get_ygrid () == "off" + || ap.get_zgrid () == "off") + ? "on" : "off"); - ColumnVector p0 = ap.pixel2coord (pt.x (), pt.y ()); - Matrix xlim = ap.get_xlim ().matrix_value (); - Matrix ylim = ap.get_ylim ().matrix_value (); + ap.set_xgrid (state); + ap.set_ygrid (state); + ap.set_zgrid (state); - if (xlim(0) < p0(0) && xlim(1) > p0(0) - && ylim(0) < p0(1) && ylim(1) > p0(1)) - { - axesObj = *it; - return; - } - } - } - else if (! currentObj) - { - for (QList<graphics_object>::ConstIterator it = axesList.begin (); - it != axesList.end (); ++it) - { - graphics_object go = selectFromAxes (*it, event->pos ()); + redraw (true); + } + } + } + + static void + autoscale_axes (axes::properties& ap) + { + ap.clear_zoom_stack (); - if (go) - { - currentObj = go; - axesObj = *it; - } - // FIXME: is this really necessary? the axes object should - // have been selected through selectFromAxes anyway - else if (it->get_properties ().is_hittest ()) - { - Matrix bb = it->get_properties ().get_boundingbox (true); - QRectF r (bb(0), bb(1), bb(2), bb(3)); + ap.set_xlimmode ("auto"); + ap.set_ylimmode ("auto"); + ap.set_zlimmode ("auto"); + } + + void + Canvas::canvasAutoAxes (const graphics_handle& handle) + { + gh_manager::auto_lock lock; -#if defined (HAVE_QT4) - bool rect_contains_pos = r.contains (event->posF ()); -#else - bool rect_contains_pos = r.contains (event->localPos ()); -#endif - if (rect_contains_pos) - axesObj = *it; - } + graphics_object go = gh_manager::get_object (handle); + + if (go.valid_object ()) + { + figure::properties& fp = Utils::properties<figure> (go); - if (axesObj && currentObj) - break; - } - } -} + graphics_handle ah = fp.get_currentaxes (); -void -Canvas::canvasMouseMoveEvent (QMouseEvent* event) -{ - gh_manager::auto_lock lock; - graphics_object ax = gh_manager::get_object (m_mouseAxes); + graphics_object ax = gh_manager::get_object (ah); - if (m_mouseMode != NoMode && (ax.valid_object () || m_mouseMode == TextMode)) - { - switch (m_mouseMode) - { - case RotateMode: + if (ax.valid_object ()) { axes::properties& ap = Utils::properties<axes> (ax); - ap.rotate3d (m_mouseCurrent.x (), event->x (), - m_mouseCurrent.y (), event->y ()); + autoscale_axes (ap); - // Update current mouse position - m_mouseCurrent = event->pos (); - - // Force immediate redraw redraw (true); } - break; - case TextMode: - case ZoomInMode: - case ZoomOutMode: - m_mouseCurrent = event->pos (); - redraw (true); - break; + } + } + + void + Canvas::canvasPaintEvent (void) + { + if (! m_redrawBlocked) + { + gh_manager::auto_lock lock; + + draw (m_handle); + + if ((m_mouseMode == ZoomInMode && m_mouseAxes.ok ()) || m_rectMode) + drawZoomBox (m_mouseAnchor, m_mouseCurrent); + } + } + + static bool + pan_enabled (const graphics_object figObj) + { + // Getting pan mode property: + octave_value ov_pm + = Utils::properties<figure> (figObj).get___pan_mode__ (); + + octave_scalar_map pm = ov_pm.scalar_map_value (); + + return pm.contents ("Enable").string_value () == "on"; + } + + static std::string + pan_mode (const graphics_object figObj) + { + // Getting pan mode property: + octave_value ov_pm + = Utils::properties<figure> (figObj).get___pan_mode__ (); + + octave_scalar_map pm = ov_pm.scalar_map_value (); + + return pm.contents ("Motion").string_value (); + } + + static bool + zoom_enabled (const graphics_object figObj) + { + // Getting zoom mode property: + octave_value ov_zm + = Utils::properties<figure> (figObj).get___zoom_mode__ (); + + octave_scalar_map zm = ov_zm.scalar_map_value (); + + return zm.contents ("Enable").string_value () == "on"; + } + + static std::string + zoom_mode (const graphics_object figObj) + { + // Getting zoom mode property: + octave_value ov_zm + = Utils::properties<figure> (figObj).get___zoom_mode__ (); + + octave_scalar_map zm = ov_zm.scalar_map_value (); + + return zm.contents ("Motion").string_value (); + } + + void + Canvas::select_object (graphics_object obj, QMouseEvent* event, + graphics_object ¤tObj, graphics_object &axesObj, + bool axes_only) + { + QList<graphics_object> axesList; + Matrix children = obj.get_properties ().get_all_children (); + octave_idx_type num_children = children.numel (); - case PanMode: + for (int i = 0; i < num_children; i++) + { + graphics_object childObj (gh_manager::get_object (children(i))); + + if (childObj.isa ("axes")) + axesList.append (childObj); + else if (childObj.isa ("uicontrol") || childObj.isa ("uipanel") + || childObj.isa ("uibuttongroup")) + { + Matrix bb = childObj.get_properties ().get_boundingbox (false); + QRectF r (bb(0), bb(1), bb(2), bb(3)); + + r.adjust (-5, -5, 5, 5); + +#if (HAVE_QT4) + bool rect_contains_pos = r.contains (event->posF ()); +#else + bool rect_contains_pos = r.contains (event->localPos ()); +#endif + if (rect_contains_pos) + { + currentObj = childObj; + break; + } + } + } + + if (axes_only) + { + QPoint pt = event->pos (); + + for (QList<graphics_object>::ConstIterator it = axesList.begin (); + it != axesList.end (); ++it) { - axes::properties& ap = Utils::properties<axes> (ax); + const axes::properties& ap = + dynamic_cast<const axes::properties&> ((*it).get_properties ()); + + ColumnVector p0 = ap.pixel2coord (pt.x (), pt.y ()); + Matrix xlim = ap.get_xlim ().matrix_value (); + Matrix ylim = ap.get_ylim ().matrix_value (); - graphics_object figObj (ax.get_ancestor ("figure")); + if (xlim(0) < p0(0) && xlim(1) > p0(0) + && ylim(0) < p0(1) && ylim(1) > p0(1)) + { + axesObj = *it; + return; + } + } + } + else if (! currentObj) + { + for (QList<graphics_object>::ConstIterator it = axesList.begin (); + it != axesList.end (); ++it) + { + graphics_object go = selectFromAxes (*it, event->pos ()); + + if (go) + { + currentObj = go; + axesObj = *it; + } + // FIXME: is this really necessary? the axes object should + // have been selected through selectFromAxes anyway + else if (it->get_properties ().is_hittest ()) + { + Matrix bb = it->get_properties ().get_boundingbox (true); + QRectF r (bb(0), bb(1), bb(2), bb(3)); + +#if defined (HAVE_QT4) + bool rect_contains_pos = r.contains (event->posF ()); +#else + bool rect_contains_pos = r.contains (event->localPos ()); +#endif + if (rect_contains_pos) + axesObj = *it; + } - std::string mode = pan_mode (figObj); + if (axesObj && currentObj) + break; + } + } + } + + void + Canvas::canvasMouseMoveEvent (QMouseEvent* event) + { + gh_manager::auto_lock lock; + graphics_object ax = gh_manager::get_object (m_mouseAxes); + + if (m_mouseMode != NoMode && (ax.valid_object () || m_mouseMode == TextMode)) + { + switch (m_mouseMode) + { + case RotateMode: + { + axes::properties& ap = Utils::properties<axes> (ax); + + ap.rotate3d (m_mouseCurrent.x (), event->x (), + m_mouseCurrent.y (), event->y ()); + + // Update current mouse position + m_mouseCurrent = event->pos (); + + // Force immediate redraw + redraw (true); + } + break; + case TextMode: + case ZoomInMode: + case ZoomOutMode: + m_mouseCurrent = event->pos (); + redraw (true); + break; - ColumnVector p0 = ap.pixel2coord (m_mouseCurrent.x (), - m_mouseCurrent.y ()); - ColumnVector p1 = ap.pixel2coord (event->x (), - event->y ()); + case PanMode: + { + axes::properties& ap = Utils::properties<axes> (ax); + + graphics_object figObj (ax.get_ancestor ("figure")); + + std::string mode = pan_mode (figObj); + + ColumnVector p0 = ap.pixel2coord (m_mouseCurrent.x (), + m_mouseCurrent.y ()); + ColumnVector p1 = ap.pixel2coord (event->x (), + event->y ()); + + ap.translate_view (mode, p0(0), p1(0), p0(1), p1(1)); + + // Update current mouse position + m_mouseCurrent = event->pos (); + + // Force immediate redraw + redraw (true); + } + + default: + break; + } + } + else if (m_mouseMode == NoMode) + { + graphics_object obj = gh_manager::get_object (m_handle); + + if (obj.valid_object ()) + { + graphics_object figObj (obj.get_ancestor ("figure")); + + if (figObj.valid_object () && + ! figObj.get ("windowbuttonmotionfcn").is_empty ()) + { + updateCurrentPoint (figObj, obj, event); + gh_manager::post_callback (figObj.get_handle (), + "windowbuttonmotionfcn"); + } + } + } - ap.translate_view (mode, p0(0), p1(0), p0(1), p1(1)); + // Update mouse coordinates in the figure window status bar + graphics_object obj = gh_manager::get_object (m_handle); + graphics_object figObj = obj.get_ancestor ("figure"); + + if (figObj.valid_object () && obj.valid_object ()) + { + graphics_object currentObj, axesObj; + select_object (obj, event, currentObj, axesObj, true); + + if (axesObj.valid_object ()) + { + // FIXME: should we use signal/slot mechanism instead of + // directly calling parent fig methods + Figure* fig = + dynamic_cast<Figure*> (Backend::toolkitObject (figObj)); + axes::properties& ap = Utils::properties<axes> (axesObj); + + if (fig) + fig->updateStatusBar (ap.pixel2coord (event->x (), event->y ())); + } + } + } + + void + Canvas::canvasMouseDoubleClickEvent (QMouseEvent* event) + { + // same processing as normal click, but event type is MouseButtonDblClick + canvasMousePressEvent (event); + } + + static double + button_number (QMouseEvent *event) + { + double retval = 0; - // Update current mouse position - m_mouseCurrent = event->pos (); + switch (event->button ()) + { + case Qt::LeftButton: + retval = 1; + break; + + case Qt::MidButton: + retval = 2; + break; + + case Qt::RightButton: + retval = 3; + break; + + default: + break; + } + + return retval; + } - // Force immediate redraw - redraw (true); + void + Canvas::canvasMousePressEvent (QMouseEvent* event) + { + gh_manager::auto_lock lock; + graphics_object obj = gh_manager::get_object (m_handle); + + bool isdblclick = (event->type () == QEvent::MouseButtonDblClick); + + if (obj.valid_object ()) + { + graphics_object figObj (obj.get_ancestor ("figure")); + graphics_object currentObj, axesObj; + + select_object (obj, event, currentObj, axesObj); + + if (axesObj) + { + if (axesObj.get_properties ().handlevisibility_is ("on") + && axesObj.get_properties ().get_tag () != "legend" + && axesObj.get_properties ().get_tag () != "colorbar") + Utils::properties<figure> (figObj) + .set_currentaxes (axesObj.get_handle ().as_octave_value ()); + if (! currentObj) + currentObj = axesObj; } - default: - break; - } - } - else if (m_mouseMode == NoMode) - { - graphics_object obj = gh_manager::get_object (m_handle); - - if (obj.valid_object ()) - { - graphics_object figObj (obj.get_ancestor ("figure")); - - if (figObj.valid_object () && - ! figObj.get ("windowbuttonmotionfcn").is_empty ()) - { - updateCurrentPoint (figObj, obj, event); - gh_manager::post_callback (figObj.get_handle (), - "windowbuttonmotionfcn"); - } - } - } - - // Update mouse coordinates in the figure window status bar - graphics_object obj = gh_manager::get_object (m_handle); - graphics_object figObj = obj.get_ancestor ("figure"); - - if (figObj.valid_object () && obj.valid_object ()) - { - graphics_object currentObj, axesObj; - select_object (obj, event, currentObj, axesObj, true); + if (! currentObj) + currentObj = obj; - if (axesObj.valid_object ()) - { - // FIXME: should we use signal/slot mechanism instead of - // directly calling parent fig methods - Figure* fig = - dynamic_cast<Figure*> (Backend::toolkitObject (figObj)); - axes::properties& ap = Utils::properties<axes> (axesObj); - - if (fig) - fig->updateStatusBar (ap.pixel2coord (event->x (), event->y ())); - } - } -} + if (currentObj.get_properties ().handlevisibility_is ("on")) + Utils::properties<figure> (figObj) + .set_currentobject (currentObj.get_handle ().as_octave_value ()); + else + Utils::properties<figure> (figObj).set_currentobject ( + octave::numeric_limits<double>::NaN ()); -void -Canvas::canvasMouseDoubleClickEvent (QMouseEvent* event) -{ - // same processing as normal click, but event type is MouseButtonDblClick - canvasMousePressEvent (event); -} - -static double -button_number (QMouseEvent *event) -{ - double retval = 0; + Figure* fig = dynamic_cast<Figure*> (Backend::toolkitObject (figObj)); - switch (event->button ()) - { - case Qt::LeftButton: - retval = 1; - break; - - case Qt::MidButton: - retval = 2; - break; - - case Qt::RightButton: - retval = 3; - break; + MouseMode newMouseMode = NoMode; - default: - break; - } - - return retval; -} - -void -Canvas::canvasMousePressEvent (QMouseEvent* event) -{ - gh_manager::auto_lock lock; - graphics_object obj = gh_manager::get_object (m_handle); - - bool isdblclick = (event->type () == QEvent::MouseButtonDblClick); - - if (obj.valid_object ()) - { - graphics_object figObj (obj.get_ancestor ("figure")); - graphics_object currentObj, axesObj; - - select_object (obj, event, currentObj, axesObj); - - if (axesObj) - { - if (axesObj.get_properties ().handlevisibility_is ("on") - && axesObj.get_properties ().get_tag () != "legend" - && axesObj.get_properties ().get_tag () != "colorbar") - Utils::properties<figure> (figObj) - .set_currentaxes (axesObj.get_handle ().as_octave_value ()); - if (! currentObj) - currentObj = axesObj; - } - - if (! currentObj) - currentObj = obj; + if (fig) + newMouseMode = fig->mouseMode (); - if (currentObj.get_properties ().handlevisibility_is ("on")) - Utils::properties<figure> (figObj) - .set_currentobject (currentObj.get_handle ().as_octave_value ()); - else - Utils::properties<figure> (figObj).set_currentobject (octave::numeric_limits<double>::NaN ()); - - Figure* fig = dynamic_cast<Figure*> (Backend::toolkitObject (figObj)); - - MouseMode newMouseMode = NoMode; - - if (fig) - newMouseMode = fig->mouseMode (); - - switch (newMouseMode) - { - case NoMode: - gh_manager::post_set (figObj.get_handle (), "selectiontype", - Utils::figureSelectionType (event, isdblclick), false); + switch (newMouseMode) + { + case NoMode: + gh_manager::post_set (figObj.get_handle (), "selectiontype", + Utils::figureSelectionType (event, isdblclick), false); - updateCurrentPoint (figObj, obj, event); - - gh_manager::post_callback (figObj.get_handle (), - "windowbuttondownfcn", - button_number (event)); + updateCurrentPoint (figObj, obj, event); - if (currentObj.get ("buttondownfcn").is_empty ()) - { - graphics_object parentObj = - gh_manager::get_object (currentObj.get_parent ()); - - if (parentObj.valid_object () && parentObj.isa ("hggroup")) - gh_manager::post_callback (parentObj.get_handle (), - "buttondownfcn", - button_number (event)); - } - else - gh_manager::post_callback (currentObj.get_handle (), - "buttondownfcn", + gh_manager::post_callback (figObj.get_handle (), + "windowbuttondownfcn", button_number (event)); - if (event->button () == Qt::RightButton) - ContextMenu::executeAt (currentObj.get_properties (), - event->globalPos ()); - break; - - case TextMode: - { - if (event->modifiers () == Qt::NoModifier) + if (currentObj.get ("buttondownfcn").is_empty ()) { - switch (event->buttons ()) - { - case Qt::LeftButton: - m_mouseAnchor = m_mouseCurrent = event->pos (); - m_mouseMode = newMouseMode; - m_rectMode = true; - } - } - redraw (false); - } - break; + graphics_object parentObj = + gh_manager::get_object (currentObj.get_parent ()); - case PanMode: - case RotateMode: - case ZoomInMode: - case ZoomOutMode: - if (axesObj && axesObj.get_properties ().handlevisibility_is ("on")) - { - bool redraw_figure = true; + if (parentObj.valid_object () && parentObj.isa ("hggroup")) + gh_manager::post_callback (parentObj.get_handle (), + "buttondownfcn", + button_number (event)); + } + else + gh_manager::post_callback (currentObj.get_handle (), + "buttondownfcn", + button_number (event)); - if (isdblclick) - { - if (event->button () == Qt::LeftButton) - { - axes::properties& ap = Utils::properties<axes> (axesObj); + if (event->button () == Qt::RightButton) + ContextMenu::executeAt (currentObj.get_properties (), + event->globalPos ()); + break; - autoscale_axes (ap); - } - else - { - redraw_figure = false; - } - } - else if (event->modifiers () == Qt::NoModifier) + case TextMode: + { + if (event->modifiers () == Qt::NoModifier) { switch (event->buttons ()) { case Qt::LeftButton: m_mouseAnchor = m_mouseCurrent = event->pos (); - m_mouseAxes = axesObj.get_handle (); m_mouseMode = newMouseMode; - m_clickMode = newMouseMode == ZoomInMode; - break; + m_rectMode = true; + } + } + redraw (false); + } + break; + + case PanMode: + case RotateMode: + case ZoomInMode: + case ZoomOutMode: + if (axesObj && axesObj.get_properties ().handlevisibility_is ("on")) + { + bool redraw_figure = true; + + if (isdblclick) + { + if (event->button () == Qt::LeftButton) + { + axes::properties& ap = Utils::properties<axes> (axesObj); - case Qt::RightButton: - if (newMouseMode == ZoomInMode) - { - m_mouseAnchor = m_mouseCurrent = event->pos (); - m_mouseAxes = axesObj.get_handle (); - m_mouseMode = newMouseMode; - m_clickMode = false; - } + autoscale_axes (ap); + } + else + { + redraw_figure = false; + } + } + else if (event->modifiers () == Qt::NoModifier) + { + switch (event->buttons ()) + { + case Qt::LeftButton: + m_mouseAnchor = m_mouseCurrent = event->pos (); + m_mouseAxes = axesObj.get_handle (); + m_mouseMode = newMouseMode; + m_clickMode = newMouseMode == ZoomInMode; + break; - break; + case Qt::RightButton: + if (newMouseMode == ZoomInMode) + { + m_mouseAnchor = m_mouseCurrent = event->pos (); + m_mouseAxes = axesObj.get_handle (); + m_mouseMode = newMouseMode; + m_clickMode = false; + } - case Qt::MidButton: + break; + + case Qt::MidButton: { axes::properties& ap = Utils::properties<axes> (axesObj); autoscale_axes (ap); } - break; + break; - default: - redraw_figure = false; - break; - } - } - else if (event->modifiers () == Qt::ShiftModifier) - { - switch (event->buttons ()) - { - case Qt::LeftButton: - if (newMouseMode == ZoomInMode) - { - m_mouseAnchor = m_mouseCurrent = event->pos (); - m_mouseAxes = axesObj.get_handle (); - m_mouseMode = newMouseMode; - m_clickMode = false; - } - break; + default: + redraw_figure = false; + break; + } + } + else if (event->modifiers () == Qt::ShiftModifier) + { + switch (event->buttons ()) + { + case Qt::LeftButton: + if (newMouseMode == ZoomInMode) + { + m_mouseAnchor = m_mouseCurrent = event->pos (); + m_mouseAxes = axesObj.get_handle (); + m_mouseMode = newMouseMode; + m_clickMode = false; + } + break; - default: - redraw_figure = false; - break; - } - } + default: + redraw_figure = false; + break; + } + } - if (redraw_figure) - redraw (false); - } - break; + if (redraw_figure) + redraw (false); + } + break; - default: - break; - } - } + default: + break; + } + } -} + } -void -Canvas::canvasMouseReleaseEvent (QMouseEvent* event) -{ - if ((m_mouseMode == ZoomInMode || m_mouseMode == ZoomOutMode) - && m_mouseAxes.ok ()) - { - gh_manager::auto_lock lock; - graphics_object ax = gh_manager::get_object (m_mouseAxes); + void + Canvas::canvasMouseReleaseEvent (QMouseEvent* event) + { + if ((m_mouseMode == ZoomInMode || m_mouseMode == ZoomOutMode) + && m_mouseAxes.ok ()) + { + gh_manager::auto_lock lock; + graphics_object ax = gh_manager::get_object (m_mouseAxes); - if (ax.valid_object ()) - { - axes::properties& ap = Utils::properties<axes> (ax); + if (ax.valid_object ()) + { + axes::properties& ap = Utils::properties<axes> (ax); - graphics_object obj = gh_manager::get_object (m_handle); + graphics_object obj = gh_manager::get_object (m_handle); - graphics_object figObj (obj.get_ancestor ("figure")); + graphics_object figObj (obj.get_ancestor ("figure")); - std::string zm = zoom_mode (figObj); + std::string zm = zoom_mode (figObj); - if (m_mouseAnchor == event->pos ()) - { - double factor = m_clickMode ? 2.0 : 0.5; + if (m_mouseAnchor == event->pos ()) + { + double factor = m_clickMode ? 2.0 : 0.5; - ColumnVector p1 = ap.pixel2coord (event->x (), event->y ()); + ColumnVector p1 = ap.pixel2coord (event->x (), event->y ()); - ap.zoom_about_point (zm, p1(0), p1(1), factor); - } - else if (m_mouseMode == ZoomInMode) - { - ColumnVector p0 = ap.pixel2coord (m_mouseAnchor.x (), - m_mouseAnchor.y ()); - ColumnVector p1 = ap.pixel2coord (event->x (), - event->y ()); + ap.zoom_about_point (zm, p1(0), p1(1), factor); + } + else if (m_mouseMode == ZoomInMode) + { + ColumnVector p0 = ap.pixel2coord (m_mouseAnchor.x (), + m_mouseAnchor.y ()); + ColumnVector p1 = ap.pixel2coord (event->x (), + event->y ()); - Matrix xl (1, 2, 0.0); - Matrix yl (1, 2, 0.0); + Matrix xl (1, 2, 0.0); + Matrix yl (1, 2, 0.0); - xl(0) = std::min (p0(0), p1(0)); - xl(1) = std::max (p0(0), p1(0)); - yl(0) = std::min (p0(1), p1(1)); - yl(1) = std::max (p0(1), p1(1)); + xl(0) = std::min (p0(0), p1(0)); + xl(1) = std::max (p0(0), p1(0)); + yl(0) = std::min (p0(1), p1(1)); + yl(1) = std::max (p0(1), p1(1)); - ap.zoom (zm, xl, yl); - } + ap.zoom (zm, xl, yl); + } - redraw (false); - } - } - else if (m_mouseMode == NoMode) - { - gh_manager::auto_lock lock; - graphics_object obj = gh_manager::get_object (m_handle); + redraw (false); + } + } + else if (m_mouseMode == NoMode) + { + gh_manager::auto_lock lock; + graphics_object obj = gh_manager::get_object (m_handle); - if (obj.valid_object ()) - { - graphics_object figObj (obj.get_ancestor ("figure")); + if (obj.valid_object ()) + { + graphics_object figObj (obj.get_ancestor ("figure")); - updateCurrentPoint (figObj, obj, event); - gh_manager::post_callback (figObj.get_handle (), - "windowbuttonupfcn"); - } - } - else if (m_mouseMode == TextMode) - { - gh_manager::auto_lock lock; + updateCurrentPoint (figObj, obj, event); + gh_manager::post_callback (figObj.get_handle (), + "windowbuttonupfcn"); + } + } + else if (m_mouseMode == TextMode) + { + gh_manager::auto_lock lock; - graphics_object figObj = - gh_manager::get_object (m_handle).get_ancestor ("figure"); - if (figObj.valid_object ()) - { - QWidget *w = qWidget (); - if (w) - { - Matrix bb = figObj.get ("position").matrix_value (); - bb(0) = m_mouseAnchor.x () / bb(2); - bb(1) = 1.0 - (m_mouseAnchor.y () / bb(3)); - bb(2) = (event->x () - m_mouseAnchor.x ()) / bb(2); - bb(3) = (m_mouseAnchor.y () - event->y ()) / bb(3); + graphics_object figObj = + gh_manager::get_object (m_handle).get_ancestor ("figure"); + if (figObj.valid_object ()) + { + QWidget *w = qWidget (); + if (w) + { + Matrix bb = figObj.get ("position").matrix_value (); + bb(0) = m_mouseAnchor.x () / bb(2); + bb(1) = 1.0 - (m_mouseAnchor.y () / bb(3)); + bb(2) = (event->x () - m_mouseAnchor.x ()) / bb(2); + bb(3) = (m_mouseAnchor.y () - event->y ()) / bb(3); - octave_value_list props = ovl ("textbox", bb); + octave_value_list props = ovl ("textbox", bb); - annotation_dialog anno_dlg (w, props); + annotation_dialog anno_dlg (w, props); - if (anno_dlg.exec () == QDialog::Accepted) - { - props = anno_dlg.get_properties (); - props.prepend (figObj.get_handle ().as_octave_value ()); + if (anno_dlg.exec () == QDialog::Accepted) + { + props = anno_dlg.get_properties (); + props.prepend (figObj.get_handle ().as_octave_value ()); - octave_link::post_event (this, &Canvas::annotation_callback, - props); - } - } - } - } - m_rectMode = false; - m_mouseAxes = graphics_handle (); - m_mouseMode = NoMode; -} + octave_link::post_event (this, &Canvas::annotation_callback, + props); + } + } + } + } + m_rectMode = false; + m_mouseAxes = graphics_handle (); + m_mouseMode = NoMode; + } -void -Canvas::canvasWheelEvent (QWheelEvent* event) -{ - gh_manager::auto_lock lock; - graphics_object obj = gh_manager::get_object (m_handle); + void + Canvas::canvasWheelEvent (QWheelEvent* event) + { + gh_manager::auto_lock lock; + graphics_object obj = gh_manager::get_object (m_handle); - if (obj.valid_object ()) - { - std::string mode; + if (obj.valid_object ()) + { + std::string mode; - graphics_object axesObj; + graphics_object axesObj; - Matrix children = obj.get_properties ().get_children (); - octave_idx_type num_children = children.numel (); + Matrix children = obj.get_properties ().get_children (); + octave_idx_type num_children = children.numel (); - for (int i = 0; i < num_children; i++) - { - graphics_object childObj (gh_manager::get_object (children(i))); + for (int i = 0; i < num_children; i++) + { + graphics_object childObj (gh_manager::get_object (children(i))); - if (childObj.isa ("axes")) - { - graphics_object go = selectFromAxes (childObj, event->pos ()); + if (childObj.isa ("axes")) + { + graphics_object go = selectFromAxes (childObj, event->pos ()); - if (go) - { - axesObj = childObj; - break; - } - } - } + if (go) + { + axesObj = childObj; + break; + } + } + } - if (axesObj) - { - MouseMode newMouseMode = NoMode; + if (axesObj) + { + MouseMode newMouseMode = NoMode; - graphics_object figObj (obj.get_ancestor ("figure")); + graphics_object figObj (obj.get_ancestor ("figure")); - Figure* fig = dynamic_cast<Figure*> (Backend::toolkitObject (figObj)); + Figure* fig = dynamic_cast<Figure*> (Backend::toolkitObject (figObj)); - if (fig) - newMouseMode = fig->mouseMode (); + if (fig) + newMouseMode = fig->mouseMode (); - if (axesObj.get_properties ().handlevisibility_is ("on")) - { - Utils::properties<figure> (figObj) + if (axesObj.get_properties ().handlevisibility_is ("on")) + { + Utils::properties<figure> (figObj) .set_currentaxes (axesObj.get_handle ().as_octave_value ()); - if (zoom_enabled (figObj)) - { - if (event->delta () > 0) - newMouseMode = ZoomInMode; - else - newMouseMode = ZoomOutMode; + if (zoom_enabled (figObj)) + { + if (event->delta () > 0) + newMouseMode = ZoomInMode; + else + newMouseMode = ZoomOutMode; - mode = zoom_mode (figObj); - } - else if (pan_enabled (figObj)) - { - newMouseMode = PanMode; + mode = zoom_mode (figObj); + } + else if (pan_enabled (figObj)) + { + newMouseMode = PanMode; - mode = pan_mode (figObj); - } - } + mode = pan_mode (figObj); + } + } - bool redrawFigure = true; + bool redrawFigure = true; - switch (newMouseMode) - { - case ZoomInMode: - case ZoomOutMode: + switch (newMouseMode) { - axes::properties& ap = Utils::properties<axes> (axesObj); + case ZoomInMode: + case ZoomOutMode: + { + axes::properties& ap = Utils::properties<axes> (axesObj); - // Control how fast to zoom when using scroll wheel. - double wheel_zoom_speed = ap.get_mousewheelzoom (); + // Control how fast to zoom when using scroll wheel. + double wheel_zoom_speed = ap.get_mousewheelzoom (); - // Determine if we're zooming in or out. - double factor = (newMouseMode == ZoomInMode - ? 1 / (1.0 - wheel_zoom_speed) - : 1.0 - wheel_zoom_speed); + // Determine if we're zooming in or out. + double factor = (newMouseMode == ZoomInMode + ? 1 / (1.0 - wheel_zoom_speed) + : 1.0 - wheel_zoom_speed); - // FIXME: should we zoom about point for 2D plots? + // FIXME: should we zoom about point for 2D plots? - ap.zoom (mode, factor); - } - break; + ap.zoom (mode, factor); + } + break; - case PanMode: - { - axes::properties& ap = Utils::properties<axes> (axesObj); + case PanMode: + { + axes::properties& ap = Utils::properties<axes> (axesObj); - double factor = event->delta () > 0 ? 0.1 : -0.1; + double factor = event->delta () > 0 ? 0.1 : -0.1; - ap.pan (mode, factor); - } - break; + ap.pan (mode, factor); + } + break; - default: - redrawFigure = false; - break; - } + default: + redrawFigure = false; + break; + } - if (redrawFigure) - redraw (false); - } - } -} + if (redrawFigure) + redraw (false); + } + } + } -bool -Canvas::canvasKeyPressEvent (QKeyEvent* event) -{ - if (m_eventMask & KeyPress) - { - gh_manager::auto_lock lock; - graphics_object obj = gh_manager::get_object (m_handle); + bool + Canvas::canvasKeyPressEvent (QKeyEvent* event) + { + if (m_eventMask & KeyPress) + { + gh_manager::auto_lock lock; + graphics_object obj = gh_manager::get_object (m_handle); - if (obj.valid_object ()) - { - graphics_object figObj (obj.get_ancestor ("figure")); + if (obj.valid_object ()) + { + graphics_object figObj (obj.get_ancestor ("figure")); - updateCurrentPoint (figObj, obj); - } + updateCurrentPoint (figObj, obj); + } - octave_scalar_map eventData = Utils::makeKeyEventStruct (event); + octave_scalar_map eventData = Utils::makeKeyEventStruct (event); - gh_manager::post_set (m_handle, "currentcharacter", - eventData.getfield ("Character"), false); - gh_manager::post_callback (m_handle, "keypressfcn", eventData); + gh_manager::post_set (m_handle, "currentcharacter", + eventData.getfield ("Character"), false); + gh_manager::post_callback (m_handle, "keypressfcn", eventData); - return true; - } + return true; + } - return false; -} + return false; + } -bool -Canvas::canvasKeyReleaseEvent (QKeyEvent* event) -{ - if (! event->isAutoRepeat () && (m_eventMask & KeyRelease)) - { - gh_manager::post_callback (m_handle, "keyreleasefcn", - Utils::makeKeyEventStruct (event)); + bool + Canvas::canvasKeyReleaseEvent (QKeyEvent* event) + { + if (! event->isAutoRepeat () && (m_eventMask & KeyRelease)) + { + gh_manager::post_callback (m_handle, "keyreleasefcn", + Utils::makeKeyEventStruct (event)); - return true; - } + return true; + } - return false; -} + return false; + } -Canvas* -Canvas::create (const std::string& /* name */, QWidget* parent, - const graphics_handle& handle) -{ - // Only OpenGL - return new GLCanvas (parent, handle); -} + Canvas* + Canvas::create (const std::string& /* name */, QWidget* parent, + const graphics_handle& handle) + { + // Only OpenGL + return new GLCanvas (parent, handle); + } }; // namespace QtHandles +