Scrolling basically working

presentation
Andreas Butti 7 years ago
parent ce633a01d0
commit cea9c44071
  1. 2
      src/gui/Layout.cpp
  2. 4
      src/gui/scroll/ScrollHandling.h
  3. 15
      src/gui/scroll/ScrollHandlingGtk.cpp
  4. 4
      src/gui/scroll/ScrollHandlingGtk.h
  5. 29
      src/gui/scroll/ScrollHandlingXournalpp.cpp
  6. 4
      src/gui/scroll/ScrollHandlingXournalpp.h
  7. 2
      src/gui/widgets/XournalWidget.cpp

@ -25,6 +25,7 @@ Layout::Layout(XournalView* view, ScrollHandling* scrollHandling)
XOJ_CHECK_TYPE_OBJ(layout, Layout);
layout->checkScroll(adjustment, layout->lastScrollHorizontal);
layout->updateCurrentPage();
layout->scrollHandling->scrollChanged();
}), this);
g_signal_connect(scrollHandling->getVertical(), "value-changed", G_CALLBACK(
@ -33,6 +34,7 @@ Layout::Layout(XournalView* view, ScrollHandling* scrollHandling)
XOJ_CHECK_TYPE_OBJ(layout, Layout);
layout->checkScroll(adjustment, layout->lastScrollVertical);
layout->updateCurrentPage();
layout->scrollHandling->scrollChanged();
}), this);
lastScrollHorizontal = gtk_adjustment_get_value(scrollHandling->getHorizontal());

@ -34,6 +34,10 @@ public:
virtual int getPrefferedWidth() = 0;
virtual int getPrefferedHeight() = 0;
virtual void translate(cairo_t* cr, double& x1, double& x2, double& y1, double& y2) = 0;
virtual void scrollChanged() = 0;
private:
XOJ_TYPE_ATTRIB;

@ -35,3 +35,18 @@ int ScrollHandlingGtk::getPrefferedHeight()
return layout->getLayoutHeight();
}
void ScrollHandlingGtk::translate(cairo_t* cr, double& x1, double& x2, double& y1, double& y2)
{
XOJ_CHECK_TYPE(ScrollHandlingGtk);
// Nothing to do here - all done by GTK
}
void ScrollHandlingGtk::scrollChanged()
{
XOJ_CHECK_TYPE(ScrollHandlingGtk);
// Nothing to do here - all done by GTK
}

@ -25,6 +25,10 @@ public:
virtual int getPrefferedWidth();
virtual int getPrefferedHeight();
virtual void translate(cairo_t* cr, double& x1, double& x2, double& y1, double& y2);
virtual void scrollChanged();
private:
XOJ_TYPE_ATTRIB;
};

@ -16,7 +16,11 @@ void ScrollHandlingXournalpp::setLayoutSize(int width, int height)
{
XOJ_CHECK_TYPE(ScrollHandlingXournalpp);
// TODO !!!!!!!!!!!
gtk_adjustment_set_page_size(adjHorizontal, gtk_widget_get_allocated_width(xournal));
gtk_adjustment_set_upper(adjHorizontal, width);
gtk_adjustment_set_page_size(adjVertical, gtk_widget_get_allocated_height(xournal));
gtk_adjustment_set_upper(adjVertical, height);
}
int ScrollHandlingXournalpp::getPrefferedWidth()
@ -32,3 +36,26 @@ int ScrollHandlingXournalpp::getPrefferedHeight()
return 400;
}
void ScrollHandlingXournalpp::translate(cairo_t* cr, double& x1, double& x2, double& y1, double& y2)
{
XOJ_CHECK_TYPE(ScrollHandlingXournalpp);
double h = gtk_adjustment_get_value(adjHorizontal);
double v = gtk_adjustment_get_value(adjVertical);
cairo_translate(cr, -h, -v);
x1 -= v;
x2 -= v;
y1 -= h;
y2 -= h;
}
void ScrollHandlingXournalpp::scrollChanged()
{
XOJ_CHECK_TYPE(ScrollHandlingXournalpp);
gtk_widget_queue_draw(xournal);
}

@ -25,6 +25,10 @@ public:
virtual int getPrefferedWidth();
virtual int getPrefferedHeight();
virtual void translate(cairo_t* cr, double& x1, double& x2, double& y1, double& y2);
virtual void scrollChanged();
private:
XOJ_TYPE_ATTRIB;
};

@ -289,6 +289,8 @@ static gboolean gtk_xournal_draw(GtkWidget* widget, cairo_t* cr)
cairo_rectangle(cr, x1, y1, x2 - x1, y2 - y1);
cairo_fill(cr);
xournal->scrollHandling->translate(cr, x1, x2, y1, y2);
Rectangle clippingRect(x1 - 10, y1 - 10, x2 - x1 + 20, y2 - y1 + 20);
while (it.hasNext())

Loading…
Cancel
Save