Merge pull request #438 from andreasb242/scroll-touch-disable

Try to disable scrolling if pen is active
presentation
andreasb242 7 years ago committed by GitHub
commit ca2bbfbcae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 53
      src/gui/Layout.cpp
  2. 14
      src/gui/Layout.h
  3. 12
      src/gui/MainWindow.cpp

@ -7,20 +7,38 @@
#include "widgets/XournalWidget.h" #include "widgets/XournalWidget.h"
Layout::Layout(XournalView* _view, Layout::Layout(XournalView* view,
GtkAdjustment* adjHorizontal, GtkAdjustment* adjHorizontal,
GtkAdjustment* adjVertical) GtkAdjustment* adjVertical)
: view(_view), : view(view),
adjHorizontal(adjHorizontal), adjHorizontal(adjHorizontal),
adjVertical(adjVertical), adjVertical(adjVertical),
lastScrollHorizontal(-1),
lastScrollVertical(-1),
lastWidgetWidth(0), lastWidgetWidth(0),
layoutWidth(0), layoutWidth(0),
layoutHeight(0) layoutHeight(0)
{ {
XOJ_INIT_TYPE(Layout); XOJ_INIT_TYPE(Layout);
g_signal_connect(adjHorizontal, "value-changed", G_CALLBACK(adjustmentValueChanged), this); g_signal_connect(adjHorizontal, "value-changed", G_CALLBACK(
g_signal_connect(adjVertical, "value-changed", G_CALLBACK(adjustmentValueChanged), this); +[](GtkAdjustment* adjustment, Layout* layout)
{
XOJ_CHECK_TYPE_OBJ(layout, Layout);
layout->checkScroll(adjustment, layout->lastScrollHorizontal);
layout->updateCurrentPage();
}), this);
g_signal_connect(adjVertical, "value-changed", G_CALLBACK(
+[](GtkAdjustment* adjustment, Layout* layout)
{
XOJ_CHECK_TYPE_OBJ(layout, Layout);
layout->checkScroll(adjustment, layout->lastScrollVertical);
layout->updateCurrentPage();
}), this);
lastScrollHorizontal = gtk_adjustment_get_value(adjHorizontal);
lastScrollVertical = gtk_adjustment_get_value(adjVertical);
} }
Layout::~Layout() Layout::~Layout()
@ -28,11 +46,26 @@ Layout::~Layout()
XOJ_RELEASE_TYPE(Layout); XOJ_RELEASE_TYPE(Layout);
} }
void Layout::checkScroll(GtkAdjustment* adjustment, double& lastScroll)
{
XOJ_CHECK_TYPE(Layout);
if (!view->shouldIgnoreTouchEvents())
{
lastScroll = gtk_adjustment_get_value(adjustment);
return;
}
gtk_adjustment_set_value(adjustment, lastScroll);
}
/** /**
* Check which page should be selected * Check which page should be selected
*/ */
void Layout::updateCurrentPage() void Layout::updateCurrentPage()
{ {
XOJ_CHECK_TYPE(Layout);
Rectangle visRect = getVisibleRect(); Rectangle visRect = getVisibleRect();
Control* control = this->view->getControl(); Control* control = this->view->getControl();
@ -116,14 +149,10 @@ void Layout::updateCurrentPage()
} }
} }
void Layout::adjustmentValueChanged(GtkAdjustment* adjustment,
Layout* layout)
{
layout->updateCurrentPage();
}
Rectangle Layout::getVisibleRect() Rectangle Layout::getVisibleRect()
{ {
XOJ_CHECK_TYPE(Layout);
return Rectangle(gtk_adjustment_get_value(adjHorizontal), return Rectangle(gtk_adjustment_get_value(adjHorizontal),
gtk_adjustment_get_value(adjVertical), gtk_adjustment_get_value(adjVertical),
gtk_adjustment_get_page_size(adjHorizontal), gtk_adjustment_get_page_size(adjHorizontal),
@ -135,6 +164,8 @@ Rectangle Layout::getVisibleRect()
*/ */
double Layout::getLayoutHeight() double Layout::getLayoutHeight()
{ {
XOJ_CHECK_TYPE(Layout);
return layoutHeight; return layoutHeight;
} }
@ -143,6 +174,8 @@ double Layout::getLayoutHeight()
*/ */
double Layout::getLayoutWidth() double Layout::getLayoutWidth()
{ {
XOJ_CHECK_TYPE(Layout);
return layoutWidth; return layoutWidth;
} }

@ -84,18 +84,11 @@ public:
*/ */
void updateCurrentPage(); void updateCurrentPage();
public:
/**
* Callback for a changed value of one of the adjustments of
* the scrolled window. It updates the current XojPageView
* via Layout::updateCurrentPage()
*/
static void adjustmentValueChanged(GtkAdjustment* adjustment,
Layout* layout);
private: private:
void checkScroll(GtkAdjustment* adjustment, double& lastScroll);
void setLayoutSize(int width, int height); void setLayoutSize(int width, int height);
private:
XOJ_TYPE_ATTRIB; XOJ_TYPE_ATTRIB;
XournalView* view; XournalView* view;
@ -103,6 +96,9 @@ private:
GtkAdjustment* adjHorizontal; GtkAdjustment* adjHorizontal;
GtkAdjustment* adjVertical; GtkAdjustment* adjVertical;
double lastScrollHorizontal;
double lastScrollVertical;
/** /**
* The last width of the widget * The last width of the widget
*/ */

@ -29,8 +29,8 @@ using std::cout;
using std::endl; using std::endl;
namespace bf = boost::filesystem; namespace bf = boost::filesystem;
MainWindow::MainWindow(GladeSearchpath* gladeSearchPath, Control* control) : MainWindow::MainWindow(GladeSearchpath* gladeSearchPath, Control* control)
GladeGui(gladeSearchPath, "main.glade", "mainWindow") : GladeGui(gladeSearchPath, "main.glade", "mainWindow")
{ {
XOJ_INIT_TYPE(MainWindow); XOJ_INIT_TYPE(MainWindow);
@ -61,13 +61,13 @@ MainWindow::MainWindow(GladeSearchpath* gladeSearchPath, Control* control) :
setSidebarVisible(control->getSettings()->isSidebarVisible()); setSidebarVisible(control->getSettings()->isSidebarVisible());
// Window handler // Window handler
g_signal_connect(this->window, "delete-event", (GCallback) & deleteEventCallback, this->control); g_signal_connect(this->window, "delete-event", G_CALLBACK(deleteEventCallback), this->control);
g_signal_connect(this->window, "window_state_event", G_CALLBACK(&windowStateEventCallback), this); g_signal_connect(this->window, "window_state_event", G_CALLBACK(windowStateEventCallback), this);
g_signal_connect(get("buttonCloseSidebar"), "clicked", G_CALLBACK(buttonCloseSidebarClicked), this); g_signal_connect(get("buttonCloseSidebar"), "clicked", G_CALLBACK(buttonCloseSidebarClicked), this);
// "watch over" all events // "watch over" all events
g_signal_connect(this->window, "key-press-event", (GCallback) & onKeyPressCallback, this); g_signal_connect(this->window, "key-press-event", G_CALLBACK(onKeyPressCallback), this);
this->toolbar = new ToolMenuHandler(this->control, this, GTK_WINDOW(getWindow())); this->toolbar = new ToolMenuHandler(this->control, this, GTK_WINDOW(getWindow()));
@ -97,7 +97,7 @@ MainWindow::MainWindow(GladeSearchpath* gladeSearchPath, Control* control) :
createToolbarAndMenu(); createToolbarAndMenu();
GtkWidget* menuViewSidebarVisible = get("menuViewSidebarVisible"); GtkWidget* menuViewSidebarVisible = get("menuViewSidebarVisible");
g_signal_connect(menuViewSidebarVisible, "toggled", (GCallback) viewShowSidebar, this); g_signal_connect(menuViewSidebarVisible, "toggled", G_CALLBACK(viewShowSidebar), this);
updateScrollbarSidebarPosition(); updateScrollbarSidebarPosition();

Loading…
Cancel
Save