# HG changeset patch # User John W. Eaton # Date 1561565377 14400 # Node ID 274766cae7221b9b27b0ead7eb7942e67f656bab # Parent 47589e990a27f7fed896f59b35b059b8e2a10be2 allow building with Qt4 to work again * acinclude.m4 (OCTAVE_CHECK_FUNC_QWHEELEVENT_ANGLEDELTA): New macro. (OCTAVE_CHECK_QT_VERSION): Use it. * QtHandlesUtils.cc (makeScrollEventStruct): Work with both Qt4 and Qt5. diff -r 47589e990a27 -r 274766cae722 libgui/graphics/QtHandlesUtils.cc --- a/libgui/graphics/QtHandlesUtils.cc Tue Apr 02 12:00:29 2019 +0000 +++ b/libgui/graphics/QtHandlesUtils.cc Wed Jun 26 12:09:37 2019 -0400 @@ -391,8 +391,14 @@ // We assume a standard mouse with 15 degree steps and Qt returns // 1/8 of a degree. - retval.setfield ("VerticalScrollCount", - octave_value (- event->angleDelta().y () / 120)); +#if defined (HAVE_QWHEELEVENT_ANGLEDELTA) + int ydelta = -(event->angleDelta().y ()); +#else + int ydelta = (event->orientation () == Qt::Vertical + ? -(event->delta ()) : 0); +#endif + retval.setfield ("VerticalScrollCount", octave_value (ydelta / 120)); + // FIXME: Is there any way to access the number of lines a scroll step // should correspond to? retval.setfield ("VerticalScrollAmount", octave_value (3)); diff -r 47589e990a27 -r 274766cae722 m4/acinclude.m4 --- a/m4/acinclude.m4 Tue Apr 02 12:00:29 2019 +0000 +++ b/m4/acinclude.m4 Wed Jun 26 12:09:37 2019 -0400 @@ -693,6 +693,42 @@ fi ]) dnl +dnl Check whether the Qt class QWheelEvent has the angleDelta member function. +dnl This member function was introduced in Qt 5. +dnl +dnl FIXME: Delete this entirely when we drop support for Qt 4. +dnl +AC_DEFUN([OCTAVE_CHECK_FUNC_QWHEELEVENT_ANGLEDELTA], [ + AC_CACHE_CHECK([for QWheelEvent::angleDelta in ], + [octave_cv_func_qwheelevent_angledelta], + [AC_LANG_PUSH(C++) + ac_octave_save_CPPFLAGS="$CPPFLAGS" + ac_octave_save_CXXFLAGS="$CXXFLAGS" + CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" + CXXFLAGS="$CXXPICFLAG $CXXFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + class wheel_event : public QWheelEvent + { + public: + wheel_event (QWidget *parent = 0) : QWheelEvent (parent) { this->angleDelta (); } + ~wheel_event () {} + }; + ]], [[ + wheel_event tw; + ]])], + octave_cv_func_qwheelevent_angledelta=yes, + octave_cv_func_qwheelevent_angledelta=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + CXXFLAGS="$ac_octave_save_CXXFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_func_qwheelevent_angledelta = yes; then + AC_DEFINE(HAVE_QWHEELEVENT_ANGLEDELTA, 1, + [Define to 1 if you have the `QWheelEvent::angleDelta' member function.]) + fi +]) +dnl dnl Check whether Qt message handler function accepts QMessageLogContext dnl argument. This change was introduced in Qt 5. dnl @@ -2107,6 +2143,7 @@ OCTAVE_CHECK_FUNC_QSCREEN_DEVICEPIXELRATIO OCTAVE_CHECK_FUNC_QTABWIDGET_SETMOVABLE OCTAVE_CHECK_FUNC_QTMESSAGEHANDLER_ACCEPTS_QMESSAGELOGCONTEXT + OCTAVE_CHECK_FUNC_QWHEELEVENT_ANGLEDELTA OCTAVE_CHECK_MEMBER_QFONT_FORCE_INTEGER_METRICS OCTAVE_CHECK_MEMBER_QFONT_MONOSPACE OCTAVE_HAVE_QGUIAPPLICATION