[oe] [PATCH] Add fbreader 0.10.7
Graham Gower
graham.gower at gmail.com
Mon Nov 16 22:46:23 UTC 2009
I'm a little surprised that this patch was ignored, and then someone
else imported fbreader 0.10.7. Without my useful patches (ignored
upstream too...).
-Graham
2009/9/9 Graham Gower <graham.gower at gmail.com>:
> Probably looks ugly on small screens, but as none of the other build targets
> would build for me, nor the older fbreader recipes, I adapted the
> desktop/gtk
> target for this latest version.
>
> Patches are mostly to fix tap scrolling bugs.
>
> Signed-off-by: Graham Gower <graham.gower at gmail.com>
> ---
> conf/checksums.ini | 4 +
> .../fbreader/fbreader-0.10.7/clear-selection.patch | 14 +++++
> .../fbreader-0.10.7/motion-threshold.patch | 23 ++++++++
> .../fbreader-0.10.7/remove-recursion.patch | 10 +++
> recipes/fbreader/fbreader-0.10.7/sane-events.patch | 59
> ++++++++++++++++++++
> recipes/fbreader/fbreader_0.10.7.bb | 41 ++++++++++++++
> 6 files changed, 151 insertions(+), 0 deletions(-)
> create mode 100644 recipes/fbreader/fbreader-0.10.7/clear-selection.patch
> create mode 100644 recipes/fbreader/fbreader-0.10.7/motion-threshold.patch
> create mode 100644 recipes/fbreader/fbreader-0.10.7/remove-recursion.patch
> create mode 100644 recipes/fbreader/fbreader-0.10.7/sane-events.patch
> create mode 100644 recipes/fbreader/fbreader_0.10.7.bb
>
> diff --git a/conf/checksums.ini b/conf/checksums.ini
> index a69b6b0..74580d6 100644
> --- a/conf/checksums.ini
> +++ b/conf/checksums.ini
> @@ -6066,6 +6066,10 @@
> sha256=e4db7a6305ffe2333fae08c940ded8f7e5b02999e0917b0ea4ef3764c80f58c8
> md5=2d2f3713cf3c17b71997064f39d4c888
> sha256=e4db7a6305ffe2333fae08c940ded8f7e5b02999e0917b0ea4ef3764c80f58c8
>
> +[http://www.fbreader.org/fbreader-sources-0.10.7.tgz]
> +md5=145f4d2ba24c54288bad2d66ddd2baf2
> +sha256=d7bcc7cafb1c78f00b380dc2facdb82c5a2fb1475e1ddfc8e5d44a2b855cec1a
> +
> [http://only.mawhrin.net/fbreader/obsolete/fbreader-sources-0.7.3d.tgz]
> md5=705a89bb03860fb312a7afa25db0310e
> sha256=ec9f93968147526a9b2dd17e31a6d2795356b2eeed309f796f655b37b98abd83
> diff --git a/recipes/fbreader/fbreader-0.10.7/clear-selection.patch
> b/recipes/fbreader/fbreader-0.10.7/clear-selection.patch
> new file mode 100644
> index 0000000..813b2ba
> --- /dev/null
> +++ b/recipes/fbreader/fbreader-0.10.7/clear-selection.patch
> @@ -0,0 +1,14 @@
> +--- fbreader-0.10.7.orig/zlibrary/text/src/view/ZLTextView.cpp
> ++++ fbreader-0.10.7/zlibrary/text/src/view/ZLTextView.cpp
> +@@ -479,6 +478,11 @@
> + bool ZLTextView::onStylusRelease(int x, int y) {
> + myDoubleClickInfo.update(x, y, false);
> + ++ if (myDoubleClickInfo.Count == 2) {
> ++ /* fast tap */
> ++ mySelectionModel.clear();
> ++ application().refreshWindow();
> ++ }
> + if (myDoubleClickInfo.Count > 0) {
> + return onStylusClick(x, y, myDoubleClickInfo.Count);
> + }
> diff --git a/recipes/fbreader/fbreader-0.10.7/motion-threshold.patch
> b/recipes/fbreader/fbreader-0.10.7/motion-threshold.patch
> new file mode 100644
> index 0000000..0359aba
> --- /dev/null
> +++ b/recipes/fbreader/fbreader-0.10.7/motion-threshold.patch
> @@ -0,0 +1,23 @@
> +http://www.mikecrash.com/index.php?name=News&file=article&id=107
> +
> +diff -ur fbreader-0.10.7/fbreader/src/fbreader/FBView.cpp
> fbreader-0.10.7dfsg/fbreader/src/fbreader/FBView.cpp
> +--- fbreader-0.10.7/fbreader/src/fbreader/FBView.cpp 2009-03-30
> 23:26:07.000000000 +1030
> ++++ fbreader-0.10.7dfsg/fbreader/src/fbreader/FBView.cpp 2009-05-29
> 13:07:36.000000000 +0930
> +@@ -151,7 +154,7 @@
> + }
> + + myIsReleasedWithoutMotion =
> +- myIsReleasedWithoutMotion && (abs(x - pressedX()) <= 5) &&
> (abs(y - pressedY()) <= 5);
> ++ myIsReleasedWithoutMotion && (abs(x - pressedX()) <= 50) &&
> (abs(y - pressedY()) <= 50);
> + if (isReleasedWithoutMotion() &&
> + fbreader().EnableTapScrollingOption.value() &&
> + (!ZLBooleanOption(ZLCategoryKey::EMPTY,
> ZLOption::PLATFORM_GROUP, ZLOption::FINGER_TAP_DETECTABLE, false).value() ||
> +@@ -185,7 +188,7 @@
> + + bool FBView::onStylusMovePressed(int x, int y) {
> + if (myIsReleasedWithoutMotion) {
> +- if ((abs(x - pressedX()) > 5) || (abs(y - pressedY()) > 5))
> {
> ++ if ((abs(x - pressedX()) > 50) || (abs(y - pressedY()) >
> 50)) {
> + myIsReleasedWithoutMotion = false;
> + activateSelection(pressedX(), pressedY());
> + }
> diff --git a/recipes/fbreader/fbreader-0.10.7/remove-recursion.patch
> b/recipes/fbreader/fbreader-0.10.7/remove-recursion.patch
> new file mode 100644
> index 0000000..cab3bb4
> --- /dev/null
> +++ b/recipes/fbreader/fbreader-0.10.7/remove-recursion.patch
> @@ -0,0 +1,10 @@
> +--- fbreader-0.10.7/zlibrary/core/src/application/ZLApplication.cpp.orig
> ++++ fbreader-0.10.7/zlibrary/core/src/application/ZLApplication.cpp
> +@@ -210,7 +210,6 @@
> + void ZLApplicationWindow::refresh() {
> + refreshToolbar(WINDOW_TOOLBAR);
> + refreshToolbar(FULLSCREEN_TOOLBAR);
> +- processAllEvents();
> + }
> + + void ZLApplicationWindow::refreshToolbar(ToolbarType type) {
> diff --git a/recipes/fbreader/fbreader-0.10.7/sane-events.patch
> b/recipes/fbreader/fbreader-0.10.7/sane-events.patch
> new file mode 100644
> index 0000000..8f583e9
> --- /dev/null
> +++ b/recipes/fbreader/fbreader-0.10.7/sane-events.patch
> @@ -0,0 +1,59 @@
> +--- fbreader-0.10.7.orig/zlibrary/ui/src/gtk/view/ZLGtkViewWidget.cpp
> ++++ fbreader-0.10.7/zlibrary/ui/src/gtk/view/ZLGtkViewWidget.cpp
> +@@ -23,6 +23,7 @@
> + + #include <ZLibrary.h>
> + #include <ZLLanguageUtil.h>
> ++#include <stdlib.h>
> + + #include "ZLGtkViewWidget.h"
> + #include "ZLGtkPaintContext.h"
> +@@ -54,7 +55,15 @@
> + }
> + }
> + ++static int mouse_is_down = 0;
> ++
> + static void mousePressed(GtkWidget *area, GdkEventButton *event, gpointer
> data) {
> ++ if (event->button == 3)
> ++ /* ignore gtkstylus long touch events */
> ++ return;
> ++
> ++ mouse_is_down = 1;
> ++
> + gtk_window_set_focus(GTK_WINDOW(gtk_widget_get_toplevel(area)),
> area);
> + ZLGtkViewWidget *viewWidget = (ZLGtkViewWidget*)data;
> + int x = (int)event->x;
> +@@ -65,6 +74,12 @@
> + }
> + + static void mouseReleased(GtkWidget*, GdkEventButton *event, gpointer
> data) {
> ++ if (event->button == 3)
> ++ /* ignore gtkstylus long touch events */
> ++ return;
> ++
> ++ mouse_is_down = 0;
> ++
> + ZLGtkViewWidget *viewWidget = (ZLGtkViewWidget*)data;
> + int x = (int)event->x;
> + int y = (int)event->y;
> +@@ -73,6 +88,19 @@
> + }
> + + static void mouseMoved(GtkWidget*, GdkEventMotion *event, gpointer data)
> {
> ++ static gdouble last_x=0, last_y=0;
> ++
> ++ if (!mouse_is_down)
> ++ /* we couldn't possibly want this mouse move event */
> ++ return;
> ++
> ++ if (abs(last_x-event->x) < 5 && abs(last_y-event->y) < 5)
> ++ /* give the touchscreen tolerance for small movement */
> ++ return;
> ++
> ++ last_x = event->x;
> ++ last_y = event->y;
> ++
> + ZLGtkViewWidget *viewWidget = (ZLGtkViewWidget*)data;
> + int x, y;
> + GdkModifierType state;
> diff --git a/recipes/fbreader/fbreader_0.10.7.bb
> b/recipes/fbreader/fbreader_0.10.7.bb
> new file mode 100644
> index 0000000..256467e
> --- /dev/null
> +++ b/recipes/fbreader/fbreader_0.10.7.bb
> @@ -0,0 +1,41 @@
> +DESCRIPTION = "FBreader is an ebook reader"
> +HOMEPAGE = "http://www.fbreader.org"
> +SECTION = "x11/utils"
> +PRIORITY = "optional"
> +LICENSE = "GPLv2"
> +DEPENDS = "gtk+ expat bzip2 libfribidi liblinebreak virtual/libiconv"
> +
> +SRC_URI = "http://www.fbreader.org/fbreader-sources-${PV}.tgz \
> + file://motion-threshold.patch;patch=1 \
> + file://remove-recursion.patch;patch=1 \
> + file://sane-events.patch;patch=1 \
> + file://clear-selection.patch;patch=1 \
> + "
> +
> +READER_ARCH = "desktop"
> +READER_GUI = "gtk"
> +READER_STATUS = "release"
> +
> +FILES_${PN} += "${datadir}/FBReader ${datadir}/zlibrary ${libdir}/zlibrary"
> +FILES_${PN}-dbg += "${libdir}/zlibrary/ui/.debug"
> +
> +CFLAGS_append = "INSTALLDIR=/usr"
> +EXTRA_OEMAKE = "CC='${CXX}' LD='${CXX}' OE_CFLAGS='${CXXFLAGS}'
> INCPATH='${STAGING_INCDIR}' LIBPATH='${STAGING_LIBDIR}'"
> +
> +inherit pkgconfig
> +
> +do_configure() {
> + echo "TARGET_ARCH = ${READER_ARCH}" > ${S}/makefiles/target.mk
> + echo "UI_TYPE = ${READER_GUI}" >> ${S}/makefiles/target.mk
> + echo "TARGET_STATUS = ${READER_STATUS}" >> ${S}/makefiles/target.mk
> +}
> +
> +do_compile_append() {
> + # enable tap scrolling
> + sed -i -e 's/Enabled" value="false/Enabled" value="true/' \
> + ${S}/fbreader/data/default/config.desktop.xml
> +}
> +
> +do_install () {
> + oe_runmake DESTDIR=${D} install
> +}
> --
> 1.6.0.3
>
>
More information about the Openembedded-devel
mailing list