Mercurial > octave
changeset 27215:274766cae722
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.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 26 Jun 2019 12:09:37 -0400 |
parents | 47589e990a27 |
children | 823b4bcf79fc |
files | libgui/graphics/QtHandlesUtils.cc m4/acinclude.m4 |
diffstat | 2 files changed, 45 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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));
--- 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 <QWheelEvent>], + [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 <QWheelEvent> + 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