From: auroux
- Version 0.4.5
+ Version 0.4.6
@@ -696,21 +696,22 @@ the name and point size of the default text font.
Xournal is written by Denis Auroux
-(auroux@math.mit.edu,
-auroux@math.berkeley.edu).
+(auroux@math.berkeley.edu).
The source code includes contributions by the following people:
-Eduardo de Barros Lima, Mathieu Bouchard, Ole Jørgen Brønner,
-Vincenzo Ciancia, Luca de Cicco, Michele Codutti,
-Robert Gerlach, Lukasz Kaiser, Danny Kukawka, Bob McElrath,
-Andy Neitzke, David Planella, Alex Ray, Jean-Baptiste Rouquier,
-Mike Ter Louw, Uwe Winter, Lu Zhihe.
+Alvaro, Kit Barnes, Eduardo de Barros Lima, Mathieu Bouchard,
+Ole Jørgen Brønner, Robert Buchholz, Vincenzo Ciancia, Luca de Cicco,
+Michele Codutti, Robert Gerlach, Daniel German, Dirk Gerrits,
+Lukasz Kaiser, Timo Kluck, David Kolibac, Danny Kukawka, Stefan Lembach,
+Bob McElrath, Andy Neitzke, David Planella, Marco Poletti, Alex Ray,
+Jean-Baptiste Rouquier, Marco Souza, Mike Ter Louw, Uwe Winter, Lu Zhihe.
(Let me know if you are missing from this list or
if your name is mis-spelled)
-Xournal is distributed under the GNU General Public License.
+Xournal is distributed under the GNU General Public License (version 2, or
+at your option any later version).
Note: most of the code of version 0.4.2.1
@@ -733,6 +734,27 @@ Bug reports and suggestions can also be submitted on Xournal's
+Version 0.4.6 (May 22, 2012):
+
Author information, license, bug-reports
Version history
+
+
Version 0.4.5 (Oct 2, 2009):
Compilation and installation in /usr/local:
-./configure +./autogen.sh make (as root) make install (as root) make desktop-install @@ -1103,6 +1125,7 @@ makeCompilation and installation in $HOME:
+./autogen.sh ./configure --prefix=$HOME make make install @@ -1278,15 +1301,12 @@ Options menu), at a price of a severe loss of resolution (and the eraser tip won't be detected anymore).Note #1: you should not rotate the display while Xournal is running, otherwise the tablet calibration in Xournal may (and most likely will) -become incorrect. +become incorrect. (Less likely to occur with modern distributions and +ENABLE_XINPUT_BUGFIX disabled). Exit Xournal and restart it after the display has been rotated.-I have also had a report that one of the workarounds used by Xournal to -bypass a calibration bug in GTK+ can actually entirely prevent strokes -from being drawn. If you are being unsuccessful at drawing in Xournal -with XInput enabled, try recompiling after commenting out the line +One of the workarounds used by Xournal to +bypass a calibration bug in old versions of GTK+ seems to be more harmful +than helpful with modern distributions. If you miss the old behavior or +are having XInput issues, try recompiling after uncommenting the line
#define ENABLE_XINPUT_BUGFIXnear the beginning of src/xournal.h. -If this modification does improve things for you, and if you have a bit -of spare time to help investigate the causes of this problem, please -contact me.On-the-fly display rotation
@@ -1307,7 +1327,8 @@ To return to landscape mode:
diff --git a/mkinstalldirs b/mkinstalldirs index d2d5f21..4191a45 100755 --- a/mkinstalldirs +++ b/mkinstalldirs @@ -1,21 +1,36 @@ #! /bin/sh # mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman
+ +scriptversion=2009-04-28.21; # UTC + +# Original author: Noah Friedman # Created: 1993-05-16 -# Public domain +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . +nl=' +' +IFS=" "" $nl" errstatus=0 -dirmode="" +dirmode= usage="\ -Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help - echo "$usage" 1>&2 - exit 0 + echo "$usage" + exit $? ;; -m) # -m PERM arg shift @@ -23,6 +38,10 @@ while test $# -gt 0 ; do dirmode=$1 shift ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; --) # stop option processing shift break @@ -50,30 +69,58 @@ case $# in 0) exit 0 ;; esac +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') - if mkdir -p -- . 2>/dev/null; then + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version fi ;; *) - if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done fi ;; esac for file do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + case $file in + /*) pathcomp=/ ;; + *) pathcomp= ;; + esac + oIFS=$IFS + IFS=/ + set fnord $file shift + IFS=$oIFS - pathcomp= for d do - pathcomp="$pathcomp$d" + test "x$d" = x && continue + + pathcomp=$pathcomp$d case $pathcomp in -*) pathcomp=./$pathcomp ;; esac @@ -84,21 +131,21 @@ do mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then - errstatus=$lasterr + errstatus=$lasterr else - if test ! -z "$dirmode"; then + if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" - lasterr="" - chmod "$dirmode" "$pathcomp" || lasterr=$? + lasterr= + chmod "$dirmode" "$pathcomp" || lasterr=$? - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi fi fi - pathcomp="$pathcomp/" + pathcomp=$pathcomp/ done done @@ -107,5 +154,9 @@ exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: -# mkinstalldirs ends here diff --git a/po/ChangeLog b/po/ChangeLog index cfb01a7..421d795 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,4 @@ +Version 0.4.6: - added Italian translation (by Marco Poletti) - added German translation (by Stefan Lembach) - added Spanish translation (by Alvaro) diff --git a/po/Makefile.in.in b/po/Makefile.in.in index 15d6a20..53b496d 100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -79,7 +79,7 @@ INSTOBJEXT = @INSTOBJEXT@ $(MSGFMT) -o $@ $< .po.gmo: - file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ + $(AM_V_GEN) file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $< .po.cat: @@ -93,8 +93,18 @@ all-yes: $(CATALOGS) all-no: $(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES) - $(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) --directory=$(top_srcdir) \ + $(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) \ + --msgid-bugs-address='http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=general' \ --add-comments --keyword=_ --keyword=N_ \ + --keyword=C_:1c,2 \ + --keyword=NC_:1c,2 \ + --keyword=g_dcgettext:2 \ + --keyword=g_dngettext:2,3 \ + --keyword=g_dpgettext2:2c,3 \ + --flag=N_:1:pass-c-format \ + --flag=C_:2:pass-c-format \ + --flag=NC_:2:pass-c-format \ + --flag=g_dngettext:2:pass-c-format \ --flag=g_strdup_printf:1:c-format \ --flag=g_string_printf:2:c-format \ --flag=g_string_append_printf:2:c-format \ @@ -110,7 +120,7 @@ $(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES) --flag=g_snprintf:3:c-format \ --flag=g_scanner_error:2:c-format \ --flag=g_scanner_warn:2:c-format \ - --files-from=$(srcdir)/POTFILES.in \ + $(POTFILES) \ && test ! -f $(GETTEXT_PACKAGE).po \ || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \ && mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot ) @@ -209,7 +219,7 @@ maintainer-clean: distclean rm -f $(GMOFILES) distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir) -dist distdir: update-po $(DISTFILES) +dist distdir: $(DISTFILES) dists="$(DISTFILES)"; \ for file in $$dists; do \ ln $(srcdir)/$$file $(distdir) 2> /dev/null \ diff --git a/src/TODO b/src/TODO index 57acb3a..e6d19ed 100644 --- a/src/TODO +++ b/src/TODO @@ -12,7 +12,7 @@ List of features to be implemented (not in any particular order) - cleanup of undo history (keep track of refcounts, delete old undo) save-and-clear-undo ? -- RandR / recalibration awareness? +- RandR / recalibration awareness? - NOT NEEDED ANYMORE? (e.g. if xinput events are far away from core events, re-query geometry?) or see if removing the GTK bugfix would help? -- e.g. by recalling an internal gtk init function? @@ -21,32 +21,35 @@ List of features to be implemented (not in any particular order) to X server to query input device geometry and compensate for GTK. BUGS: -** lingering issues with synaptics touchpads? (#2872667) +- lingering issues with synaptics touchpads? (#2872667) (todo) - set device to Absolute mode at startup? (GDK doesn't expose API, cf XSetDeviceMode() in /usr/include/X11/extensions/XInput.h) -** color picker into canvas doesn't work in GTK+ 2.16 (should disable +- color picker into canvas doesn't work in GTK+ 2.16 (should disable xinput first?) -** export to PDF should see cropbox size if smaller, and map the +- export to PDF should see cropbox size if smaller, and map the cropbox -- not the entire page -- to the page area! (2009-11-18 forum) -*** filter out very large coords when loading, not just infinity - WIN32: - test further - write an installer - bug: opening files with accents in name? - bug: cairo-scaled-font in printing? (2009-11-18 bug tracker) - bug: printf() sometimes generates stroke coordinates 1.#J -1.#J (???) + (filter out inf, -inf, nan, very large values when saving ???) PATCHES TO INCORPORATE: -* filter out very large coords when loading, not just infinity; also filter - out 1.#J's +- ezyang e-mail of 11/28/2011: patches in Ubuntu to fix PDF showing up? +http://archive.ubuntu.com/ubuntu/pool/universe/x/xournal/xournal_0.4.5-3.debian.tar.gz +actually not necessary anymore? (ezyang 12/2/2011) + +- tauu e-mail of 12/1/2011: 8 small patches for win32, uploaded on tracker +https://sourceforge.net/tracker/index.php?func=detail&aid=3447356&group_id=163434&atid=827735 - patch: add Alt-Up/Dn accelerators for show/hide layer. See show_hide_layer.patch -***** my own patch noresize_background_v1.patch (also in xournal-working/) +* my own patch noresize_background_v1.patch (also in xournal-working/) ** patch: ortho/snap (revised Apr 13 2009) xournal_ortho_snap_patch_4 (by Josef Pavlicek) @@ -77,8 +80,6 @@ PATCHES TO INCORPORATE: shortcut to increase/decrease text font size by 1 point (?) - acts just as if one had clicked font sel box and resized (affects sel text + cur font) -- make default in ok_to_close() box "cancel" rather than "no". - - make line spacing in text objects customizable: to a fixed scaling factor, a fixed number of units, or the paper ruling (esp. the latter!!) diff --git a/src/ttsubset/Makefile.in b/src/ttsubset/Makefile.in index e091355..58893a5 100644 --- a/src/ttsubset/Makefile.in +++ b/src/ttsubset/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11 from Makefile.am. +# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -32,6 +32,8 @@ POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ subdir = src/ttsubset DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -113,9 +115,12 @@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ @@ -138,14 +143,22 @@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ +build = @build@ build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ +host = @host@ host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ diff --git a/src/xo-callbacks.c b/src/xo-callbacks.c index a9fb39c..3b2b319 100644 --- a/src/xo-callbacks.c +++ b/src/xo-callbacks.c @@ -2391,7 +2391,7 @@ on_canvas_button_press_event (GtkWidget *widget, if (!is_core) fix_xinput_coords((GdkEvent *)event); - if (!finite(event->x) || !finite(event->y)) return FALSE; // Xorg 7.3 bug + if (!finite_sized(event->x) || !finite_sized(event->y)) return FALSE; // Xorg 7.3 bug if (ui.cur_item_type == ITEM_TEXT) { if (!is_event_within_textview(event)) end_text(); @@ -2702,7 +2702,7 @@ on_canvas_motion_notify_event (GtkWidget *widget, is_core = (event->device == gdk_device_get_core_pointer()); if (!ui.use_xinput && !is_core) return FALSE; if (!is_core) fix_xinput_coords((GdkEvent *)event); - if (!finite(event->x) || !finite(event->y)) return FALSE; // Xorg 7.3 bug + if (!finite_sized(event->x) || !finite_sized(event->y)) return FALSE; // Xorg 7.3 bug if (ui.selection!=NULL && ui.cur_item_type == ITEM_NONE) { get_pointer_coords((GdkEvent *)event, pt); diff --git a/src/xo-file.c b/src/xo-file.c index b8d5bbb..81ce156 100644 --- a/src/xo-file.c +++ b/src/xo-file.c @@ -252,10 +252,16 @@ gboolean close_journal(void) } // sanitize a string containing floats, in case it may have , instead of . +// also replace Windows-produced 1.#J by inf void cleanup_numeric(char *s) { - while (*s!=0) { if (*s==',') *s='.'; s++; } + while (*s!=0) { + if (*s==',') *s='.'; + if (*s=='1' && s[1]=='.' && s[2]=='#' && s[3]=='J') + { *s='i'; s[1]='n'; s[2]='f'; s[3]=' '; } + s++; + } } // the XML parser functions for open_journal() @@ -650,7 +656,7 @@ void xoj_parser_text(GMarkupParseContext *context, if (ptr == text) break; text_len -= (ptr - text); text = ptr; - if (!finite(ui.cur_path.coords[n])) { + if (!finite_sized(ui.cur_path.coords[n])) { if (n>=2) ui.cur_path.coords[n] = ui.cur_path.coords[n-2]; else ui.cur_path.coords[n] = 0; } diff --git a/src/xo-misc.c b/src/xo-misc.c index 1ec4401..4f51d85 100644 --- a/src/xo-misc.c +++ b/src/xo-misc.c @@ -355,6 +355,12 @@ void refstring_unref(struct Refstring *rs) // some helper functions +int finite_sized(double x) // detect unrealistic coordinate values +{ + return (finite(x) && x<1E6 && x>-1E6); +} + + void get_pointer_coords(GdkEvent *event, gdouble *ret) { double x, y; @@ -388,7 +394,7 @@ void fix_xinput_coords(GdkEvent *event) #ifdef ENABLE_XINPUT_BUGFIX // fix broken events with the core pointer's location - if (!finite(axes[0]) || !finite(axes[1]) || axes[0]==0. || axes[1]==0.) { + if (!finite_sized(axes[0]) || !finite_sized(axes[1]) || axes[0]==0. || axes[1]==0.) { gdk_window_get_pointer(GTK_WIDGET(canvas)->window, &ix, &iy, NULL); *px = ix + sx; *py = iy + sy; @@ -403,7 +409,7 @@ void fix_xinput_coords(GdkEvent *event) *py = (axes[1]/axis_width)*ui.screen_height + sy - wy; } #else - if (!finite(*px) || !finite(*py) || (*px==0. && *py==0.)) { + if (!finite_sized(*px) || !finite_sized(*py) || *px==0. || *py==0.) { gdk_window_get_pointer(GTK_WIDGET(canvas)->window, &ix, &iy, NULL); *px = ix + sx; *py = iy + sy; @@ -445,7 +451,7 @@ double get_pressure_multiplier(GdkEvent *event) || device->num_axes <= 2) return 1.0; rawpressure = axes[2]/(device->axes[2].max - device->axes[2].min); - if (!finite(rawpressure)) return 1.0; + if (!finite_sized(rawpressure)) return 1.0; return ((1-rawpressure)*ui.width_minimum_multiplier + rawpressure*ui.width_maximum_multiplier); } diff --git a/src/xo-misc.h b/src/xo-misc.h index c4342b8..da1433d 100644 --- a/src/xo-misc.h +++ b/src/xo-misc.h @@ -34,6 +34,7 @@ void refstring_unref(struct Refstring *rs); // helper functions +int finite_sized(double x); void get_pointer_coords(GdkEvent *event, double *ret); double get_pressure_multiplier(GdkEvent *event); void fix_xinput_coords(GdkEvent *event);