Resolves: rhbz#1349501 gtk3: smooth scrolling events can be disabled...
better fix, if we listen to the eventbox we get either SMOOTH scrolling
or not smooth events, not both. We get SMOOTH when supported, and not
if not supported so no need to reintroduce the miserable hack, which
doesn't work under wayland anyway
Change-Id: I993e71d3553322425a506cd93d812efe081bf3c9
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
index e455f9e..ff5c454 100644
--- a/vcl/inc/unx/gtk/gtkframe.hxx
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
@@ -213,7 +213,6 @@ class GtkSalFrame : public SalFrame
#if GTK_CHECK_VERSION(3,0,0)
OUString m_aTooltip;
Rectangle m_aHelpArea;
guint32 m_nLastScrollEventTime;
long m_nWidthRequest;
long m_nHeightRequest;
cairo_region_t* m_pRegion;
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
index aef66c0..7e3600b 100644
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
@@ -1013,6 +1013,7 @@ void GtkSalFrame::InitCommon()
m_aMouseSignalIds.push_back(g_signal_connect( G_OBJECT(pEventWidget), "drag-failed", G_CALLBACK(signalDragFailed), this ));
m_aMouseSignalIds.push_back(g_signal_connect( G_OBJECT(pEventWidget), "drag-data-delete", G_CALLBACK(signalDragDelete), this ));
m_aMouseSignalIds.push_back(g_signal_connect( G_OBJECT(pEventWidget), "drag-data-get", G_CALLBACK(signalDragDataGet), this ));
m_aMouseSignalIds.push_back(g_signal_connect( G_OBJECT(pEventWidget), "scroll-event", G_CALLBACK(signalScroll), this ));
g_signal_connect( G_OBJECT(m_pFixedContainer), "draw", G_CALLBACK(signalDraw), this );
g_signal_connect( G_OBJECT(m_pFixedContainer), "size-allocate", G_CALLBACK(sizeAllocated), this );
@@ -1038,7 +1039,6 @@ void GtkSalFrame::InitCommon()
g_signal_connect( G_OBJECT(m_pWindow), "key-release-event", G_CALLBACK(signalKey), this );
g_signal_connect( G_OBJECT(m_pWindow), "delete-event", G_CALLBACK(signalDelete), this );
g_signal_connect( G_OBJECT(m_pWindow), "window-state-event", G_CALLBACK(signalWindowState), this );
g_signal_connect( G_OBJECT(m_pWindow), "scroll-event", G_CALLBACK(signalScroll), this );
g_signal_connect( G_OBJECT(m_pWindow), "leave-notify-event", G_CALLBACK(signalCrossing), this );
g_signal_connect( G_OBJECT(m_pWindow), "enter-notify-event", G_CALLBACK(signalCrossing), this );
g_signal_connect( G_OBJECT(m_pWindow), "visibility-notify-event", G_CALLBACK(signalVisibility), this );
@@ -1051,7 +1051,6 @@ void GtkSalFrame::InitCommon()
m_bSpanMonitorsWhenFullscreen = false;
m_nState = GDK_WINDOW_STATE_WITHDRAWN;
m_nVisibility = GDK_VISIBILITY_FULLY_OBSCURED;
m_nLastScrollEventTime = GDK_CURRENT_TIME;
m_bSendModChangeOnRelease = false;
m_pIMHandler = nullptr;
m_hBackgroundPixmap = None;
@@ -2658,13 +2657,6 @@ gboolean GtkSalFrame::signalScroll( GtkWidget*, GdkEventScroll* pEvent, gpointer
GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame);
// gnome#726878 check for duplicate legacy scroll event
if (pEvent->direction != GDK_SCROLL_SMOOTH &&
pThis->m_nLastScrollEventTime == pEvent->time)
{
return false;
}
SalWheelMouseEvent aEvent;
aEvent.mnTime = pEvent->time;
@@ -2678,8 +2670,6 @@ gboolean GtkSalFrame::signalScroll( GtkWidget*, GdkEventScroll* pEvent, gpointer
switch (pEvent->direction)
{
case GDK_SCROLL_SMOOTH:
pThis->m_nLastScrollEventTime = pEvent->time;
// rhbz#1344042 "Traditionally" in gtk3 we tool a single up/down event as
// equating to 3 scroll lines and a delta of 120. So scale the delta here
// by 120 where a single mouse wheel click is an incoming delta_x of 1