Added gtkhtml,libhildonhelp and maemopad
authorKirtika Ruchandani <kirtibr@gmail.com>
Sat, 27 Jun 2009 10:23:51 +0000 (15:53 +0530)
committerKirtika Ruchandani <kirtibr@gmail.com>
Sat, 27 Jun 2009 10:23:51 +0000 (15:53 +0530)
26 files changed:
gtkhtml/gtkhtml_050_check_string.diff [new file with mode: 0644]
gtkhtml/gtkhtml_090_dependency_removal.diff [new file with mode: 0644]
gtkhtml/gtkhtml_100_dependency_removal_cleaning.diff [new file with mode: 0644]
gtkhtml/gtkhtml_110_panning.diff [new file with mode: 0644]
gtkhtml/gtkhtml_120_text_selection.diff [new file with mode: 0644]
gtkhtml/gtkhtml_140_const_patch.diff [new file with mode: 0644]
gtkhtml/gtkhtml_150_image_magnification.diff [new file with mode: 0644]
gtkhtml/gtkhtml_160_get_motion_hints.diff [new file with mode: 0644]
gtkhtml/gtkhtml_170_text_selection_with_proper_doubleclick.diff [new file with mode: 0644]
gtkhtml/gtkhtml_180_dont_click_link_when_panning.diff [new file with mode: 0644]
gtkhtml/gtkhtml_190_proper_adjustment_values.diff [new file with mode: 0644]
gtkhtml/gtkhtml_200_textslave_proper_disposal.diff [new file with mode: 0644]
gtkhtml/gtkhtml_210_try_a11y.diff [new file with mode: 0644]
gtkhtml/gtkhtml_220_link_visited.diff [new file with mode: 0644]
gtkhtml/gtkhtml_230_remove_libart.diff [new file with mode: 0644]
gtkhtml/gtkhtml_240_last_search_selected_area.diff [new file with mode: 0644]
gtkhtml/gtkhtml_250_back_out_of_regex_search.diff [new file with mode: 0644]
gtkhtml/gtkhtml_260_dolt_fix.diff [new file with mode: 0644]
gtkhtml/gtkhtml_270_content_type_fix.diff [new file with mode: 0644]
gtkhtml/gtkhtml_280_pop_element_by_type_crash_fix.diff [new file with mode: 0644]
gtkhtml/gtkhtml_290_set_image_max_size.diff [new file with mode: 0644]
gtkhtml/gtkhtml_300_coverity_findings.diff [new file with mode: 0644]
gtkhtml/gtkhtml_310_some_workarounds_to_avoid_crash.diff [new file with mode: 0644]
gtkhtml3.14_3.24.4.bb [new file with mode: 0644]
libhildonhelp_2.0.5.bb [new file with mode: 0644]
maemopad_2.4.bb [new file with mode: 0644]

diff --git a/gtkhtml/gtkhtml_050_check_string.diff b/gtkhtml/gtkhtml_050_check_string.diff
new file mode 100644 (file)
index 0000000..bf782b3
--- /dev/null
@@ -0,0 +1,19 @@
+# Do not leak a string pointer
+#
+# Copyright (C) 2006 - 2009 Nokia Corporation.
+# This file is distributed under the terms of GNU LGPL license, either version 2
+# of the License, or (at your option) any later version.
+#
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-02-15 12:41:23.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-02-15 12:46:07.000000000 +0200
+@@ -5251,7 +5251,8 @@
+       e->formTextArea = NULL;
+       e->inOption = FALSE;
+       e->inTextArea = FALSE;
+-      e->formText = g_string_new ("");
++      if (NULL == e->formText)
++              e->formText = g_string_new ("");
+       e->flow = NULL;
diff --git a/gtkhtml/gtkhtml_090_dependency_removal.diff b/gtkhtml/gtkhtml_090_dependency_removal.diff
new file mode 100644 (file)
index 0000000..795e7bf
--- /dev/null
@@ -0,0 +1,760 @@
+diff -r -U5 gtkhtml-3.24.4/config.h.in gtkhtml-3.24.4/config.h.in
+--- gtkhtml-3.24.4/config.h.in 2008-09-22 04:21:36.000000000 +0200
++++ gtkhtml-3.24.4/config.h.in 2008-10-16 10:00:20.000000000 +0200
+@@ -23,10 +23,12 @@
+ #undef GETTEXT_PACKAGE
+ #undef GTKHTML_RELEASE
+ #undef GTKHTML_RELEASE_STRING
+ #undef HAVE_OLD_SOUP
++#undef DISABLE_PRINTING
++#undef DISABLE_GNOME
+ /* No deprecated bonobo functions */
+ #undef BONOBO_DISABLE_DEPRECATED
+ /* Editor API Version */
+diff -r -U5 gtkhtml-3.24.4/configure.in gtkhtml-3.24.4/configure.in
+--- gtkhtml-3.24.4/configure.in        2008-09-21 15:40:43.000000000 +0200
++++ gtkhtml-3.24.4/configure.in        2008-10-16 10:30:12.000000000 +0200
+@@ -3,10 +3,12 @@
+ AC_INIT(gtkhtml/gtkhtml.c)
+ AM_CONFIG_HEADER(config.h)
+ PACKAGE=gtkhtml
++AC_PROG_MAKE_SET
++
+ # Required Package Versions
+ m4_define([gtk_minimum_version], [2.12.0])
+ m4_define([gail_minimum_version], [1.1.0])
+ m4_define([gnome_icon_theme_minimum_version], [1.2.0])
+ m4_define([libbonobo_minimum_version], [2.20.3])
+@@ -68,26 +70,93 @@
+ esac
+ AC_MSG_RESULT([$os_win32])
+ AM_CONDITIONAL(OS_WIN32, [test $os_win32 = yes])
+ AC_SUBST(SOEXT)
+-GNOME_COMPILE_WARNINGS(yes)
+-CFLAGS="$CFLAGS $warning_flags"
++dnl GNOME_COMPILE_WARNINGS(yes)
++dnl CFLAGS="$CFLAGS $warning_flags"
+ AC_SUBST(CFLAGS)
+ AC_SUBST(CPPFLAGS)
+ AC_SUBST(LDFLAGS)
+ AM_GLIB_GNU_GETTEXT
+-GAIL_MODULES="gail >= gail_minimum_version"
+-PKG_CHECK_MODULES(GAIL, $GAIL_MODULES)
+-AC_SUBST(GAIL_CFLAGS)
+-AC_SUBST(GAIL_LIBS)
+-AC_SUBST(GAIL_MODULES)
++dnl
++dnl do we want a11y support?
++dnl
++GAIL_MODULES=""
++AC_ARG_ENABLE(a11y,
++             [ --enable-a11y   Enable Accessibility (requires gail) [default=yes]],
++             [ac_cv_enable_a11y=$enableval],[ac_cv_enable_a11y=yes])
++AC_MSG_CHECKING([whether to enable a11y])
++if test "$ac_cv_enable_a11y" = yes; then
++       AC_MSG_RESULT(yes)
++       GAIL_MODULES="gail >= gail_minimum_version"
++       PKG_CHECK_MODULES(GAIL, $GAIL_MODULES)
++       AC_SUBST(GAIL_CFLAGS)
++       AC_SUBST(GAIL_LIBS)
++       AC_SUBST(GAIL_MODULES)
++       A11Y_DIR="a11y"
++       AC_SUBST(A11Y_DIR)
++       A11Y_LA="../a11y/libgtkhtml-a11y.la"
++       AC_SUBST(A11Y_LA)
++else
++       AC_MSG_RESULT(no)
++       AC_DEFINE(DISABLE_A11Y)
++       CFLAGS="-DDISABLE_A11Y $CFLAGS"
++       PC_CFLAGS="-DDISABLE_A11Y $PC_CFLAGS"
++fi
++
++
++dnl
++dnl do we want printing support?
++dnl
++GNOMEPRINT_MODULES=""
++AC_ARG_ENABLE(printing,
++             [ --enable-printing Enable Printing [default=yes]],
++             [ac_cv_enable_printing=$enableval],[ac_cv_enable_printing=yes])
++AC_MSG_CHECKING([whether to enable printing])
++if test "$ac_cv_enable_printing" = yes; then
++       AC_MSG_RESULT(yes)
++       GNOME_TEST_PROGRAMS="gtest test-suite test-stress"
++else
++       AC_MSG_RESULT(no)
++       AC_DEFINE(DISABLE_PRINTING)
++       CFLAGS="-DDISABLE_PRINTING $CFLAGS"
++       PC_CFLAGS="-DDISABLE_PRINTING $PC_CFLAGS"
++fi
++AM_CONDITIONAL(HAVE_PRINTING, test x$ac_cv_enable_printing != xno)
++  
++dnl
++dnl do we want gnome support?
++dnl
++GNOME_MODULES=""
++AC_ARG_ENABLE(gnome,
++             [ --enable-gnome Enable Gnome  (requires many things) [default=yes]],
++             [ac_cv_enable_gnome=$enableval],[ac_cv_enable_gnome=yes])
++AC_MSG_CHECKING([whether to enable gnome])
++if test "$ac_cv_enable_gnome" = yes; then
++       AC_MSG_RESULT(yes)
++       GNOME_MODULES="libgnomeui-2.0 >= libgnomeui_minimum_version"
++
++       dnl **************************************************
++       dnl * Gnome Icon Theme
++       dnl **************************************************
++       PKG_CHECK_MODULES(GIT, gnome-icon-theme >= 1.2.0)
++else
++       GNOME_MODULES=""
++       AC_MSG_RESULT(no)
++       AC_DEFINE(DISABLE_GNOME)
++       CFLAGS="-DDISABLE_GNOME $CFLAGS"
++       PC_CFLAGS="-DDISABLE_GNOME $PC_CFLAGS"
++fi
++
++dnl libglade only needed on windows?
++dnl GTKHTML_MODULES="$GNOME_MODULES $GAIL_MODULES libglade-2.0 >= libglade_minimum_version enchant iso-codes"
++GTKHTML_MODULES="$GNOME_MODULES $GAIL_MODULES gtk+-2.0 >= gtk_minimum_version gconf-2.0"
+-GTKHTML_MODULES="gtk+-2.0 >= gtk_minimum_version libgnomeui-2.0 >= libgnomeui_minimum_version libglade-2.0 >= libglade_minimum_version enchant gconf-2.0 iso-codes"
+ PKG_CHECK_MODULES(GTKHTML, $GTKHTML_MODULES)
+ AC_SUBST(GTKHTML_CFLAGS)
+ AC_SUBST(GTKHTML_LIBS)
+ AC_SUBST(GTKHTML_MODULES)
+@@ -96,13 +165,25 @@
+         AC_HELP_STRING([--with-bonobo-editor],
+                 [build the older Bonobo-based editor [[default=no]]]),
+         bonobo_editor="$withval", bonobo_editor="no")
+ if test "x$bonobo_editor" = "xyes"; then
+         EDITOR_MODULES="${GTKHTML_MODULES} libbonobo-2.0 >= libbonobo_minimum_version libbonoboui-2.0 >= libbonoboui_minimum_version"
++        # These are still needed for 'dist' targets.
++        BONOBO_IDL_INCLUDES="-I`$PKG_CONFIG --variable=idldir libbonobo-2.0` -I`$PKG_CONFIG --variable=idldir bonobo-activation-2.0`"
++        AC_SUBST(BONOBO_IDL_INCLUDES)
++        ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
++        AC_SUBST(ORBIT_IDL)
++
+         PKG_CHECK_MODULES(EDITOR, $EDITOR_MODULES)
+         AC_SUBST(EDITOR_CFLAGS)
+         AC_SUBST(EDITOR_LIBS)
++
++        EDITOR_DIR="components"
++        AC_SUBST(EDITOR_DIR)
++else
++        AC_MSG_RESULT(no)
++        AC_DEFINE(DISABLE_EDITOR)
+ fi
+ AM_CONDITIONAL(BONOBO_EDITOR, test x$bonobo_editor = xyes)
+ # Glade catalog files
+ AC_ARG_WITH(glade-catalog,
+@@ -113,31 +194,20 @@
+ if test "x$glade_catalog" = "xyes"; then
+       PKG_CHECK_MODULES(GLADEUI, gladeui-1.0)
+ fi
+ AM_CONDITIONAL(GLADE_CATALOG, test x$glade_catalog = xyes)
+-# These are still needed for 'dist' targets.
+-BONOBO_IDL_INCLUDES="-I`$PKG_CONFIG --variable=idldir libbonobo-2.0` -I`$PKG_CONFIG --variable=idldir bonobo-activation-2.0`"
+-AC_SUBST(BONOBO_IDL_INCLUDES)
+-ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
+-AC_SUBST(ORBIT_IDL)
+-
+ dnl **********************************
+ dnl soup for testgtkhtml
+ dnl **********************************
+ PKG_CHECK_MODULES(SOUP, libsoup-2.4, have_soup="yes", have_soup="no")
+ AM_CONDITIONAL(HAVE_SOUP, test x$have_soup != xno)
+ AC_SUBST(SOUP_CFLAGS)
+ AC_SUBST(SOUP_LIBS)
+ dnl **************************************************
+-dnl * Gnome Icon Theme
+-dnl **************************************************
+-PKG_CHECK_MODULES(GIT, gnome-icon-theme >= gnome_icon_theme_minimum_version)
+-
+-dnl **************************************************
+ dnl * iso-codes
+ dnl **************************************************
+ AC_MSG_CHECKING([for iso-codes package])
+ have_iso_codes=no
+@@ -214,10 +284,12 @@
+ AC_SUBST(GTKHTML_CURRENT)
+ AC_SUBST(GTKHTML_REVISION)
+ AC_SUBST(GTKHTML_AGE)
++AC_SUBST(PC_CFLAGS)
++
+ dnl **************
+ dnl Done.
+ dnl **************
+ AC_OUTPUT([
+@@ -237,7 +309,12 @@
+ echo "
+ Configuration:
++       accessibility support:          $ac_cv_enable_a11y
++       gnome-print support:            $ac_cv_enable_printing
++       gnome support:                  $ac_cv_enable_gnome
++       bonobo-editor component:        $bonobo_editor
++
+       Editor component type:          ${GNOME_GTKHTML_EDITOR_TYPE}
+ "
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2008-10-16 09:59:50.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2008-10-16 10:53:23.000000000 +0200
+@@ -24,11 +24,17 @@
+ #include <gdk/gdkkeysyms.h>
+ #include <glib/gi18n-lib.h>
+ #include <string.h>
++#ifndef DISABLE_GNOME
++#include <libgnome/gnome-util.h>
++#endif
++
++#ifndef DISABLE_A11Y
+ #include "../a11y/factory.h"
++#endif
+ #include "htmlcolorset.h"
+ #include "htmlcluev.h"
+ #include "htmlcursor.h"
+ #include "htmldrawqueue.h"
+@@ -67,11 +73,10 @@
+ #include "gtkhtml-search.h"
+ #include "gtkhtml-stream.h"
+ #include "gtkhtml-private.h"
+ #include "gtkhtml-properties.h"
+ #include "math.h"
+-#include <libgnome/gnome-util.h>
+ enum DndTargetType {
+       DND_TARGET_TYPE_MESSAGE_RFC822,
+       DND_TARGET_TYPE_X_UID_LIST,
+       DND_TARGET_TYPE_TEXT_URI_LIST,
+@@ -3044,11 +3049,14 @@
+       html_class->scroll            = scroll;
+       html_class->cursor_move       = cursor_move;
+       html_class->command           = command;
+       add_bindings (klass);
++
++#ifndef DISABLE_A11Y
+       gtk_html_accessibility_init ();
++#endif /* ndef DISABLE_A11Y */
+       filename = g_build_filename (PREFIX, "share", GTKHTML_RELEASE_STRING, "keybindingsrc.emacs", NULL);
+       gtk_rc_parse (filename);
+       g_free (filename);
+       html_class->emacs_bindings = gtk_binding_set_find ("gtkhtml-bindings-emacs");
+@@ -4053,11 +4061,11 @@
+       g_return_val_if_fail (GTK_IS_HTML (html), NULL);
+       return html->priv->base_url;
+ }
+-\f
++#ifndef DISABLE_PRINTING
+ /* Printing.  */
+ void
+ gtk_html_print_page (GtkHTML *html, GtkPrintContext *context)
+ {
+       g_return_if_fail (html != NULL);
+@@ -4081,11 +4089,11 @@
+       html_engine_print (
+               html->engine, context, header_height, footer_height,
+               header_print, footer_print, user_data);
+ }
+-\f
++#endif /* ndef DISABLE_PRINTING */
+ /* Editing.  */
+ void
+ gtk_html_set_paragraph_style (GtkHTML *html,
+                             GtkHTMLParagraphStyle style)
+@@ -6075,11 +6083,11 @@
+ void
+ gtk_html_set_images_blocking (GtkHTML *html, gboolean block)
+ {
+       html->engine->block_images = block;
+ }
+-
++#ifndef DISABLE_PRINTING
+ gint
+ gtk_html_print_page_get_pages_num (GtkHTML *html,
+                                  GtkPrintContext *context,
+                                  gdouble header_height,
+                                  gdouble footer_height)
+@@ -6103,10 +6111,11 @@
+       return html_engine_print_operation_run (
+               html->engine, operation, action, parent,
+               calc_header_height, calc_footer_height,
+               draw_header, draw_footer, user_data, error);
+ }
++#endif /* ndef DISABLE_PRINTING */
+ gboolean
+ gtk_html_has_undo (GtkHTML *html)
+ {
+       return html_undo_has_undo_steps (html->engine->undo);
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/gtkhtml-embedded.c gtkhtml-3.24.4/gtkhtml/gtkhtml-embedded.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml-embedded.c  2008-06-13 05:05:58.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml-embedded.c  2008-10-16 10:50:53.000000000 +0200
+@@ -117,11 +117,13 @@
+       old_remove(container, child);
+       gtk_html_embedded_changed(GTK_HTML_EMBEDDED(container));
+ }
++#ifndef DISABLE_PRINTING
+ typedef void (*draw_print_signal)(GtkObject *, gpointer, gpointer);
++#endif /* ndef DISABLE_PRINTING */
+ typedef void (*draw_gdk_signal)(GtkObject *, gpointer, gpointer, gint, gint, gpointer);
+ static void
+ draw_gdk_signal_marshaller (GClosure     *closure,
+                           GValue       *return_value,
+@@ -186,21 +188,21 @@
+                             G_STRUCT_OFFSET (GtkHTMLEmbeddedClass, draw_gdk),
+                             NULL, NULL,
+                             draw_gdk_signal_marshaller, G_TYPE_NONE, 4,
+                             G_TYPE_POINTER, G_TYPE_POINTER,
+                             G_TYPE_INT, G_TYPE_INT);
+-
++#ifndef DISABLE_PRINTING
+       signals [DRAW_PRINT] =
+               g_signal_new ("draw_print",
+                             G_TYPE_FROM_CLASS (object_class),
+                             G_SIGNAL_RUN_FIRST,
+                             G_STRUCT_OFFSET (GtkHTMLEmbeddedClass, draw_print),
+                             NULL, NULL,
+                             g_cclosure_marshal_VOID__POINTER,
+                             G_TYPE_NONE, 1,
+                             G_TYPE_POINTER);
+-
++#endif /* ndef DISABLE_PRINTING */
+       gobject_class->finalize = gtk_html_embedded_finalize;
+       widget_class->size_request = gtk_html_embedded_size_request;
+       widget_class->size_allocate = gtk_html_embedded_size_allocate;
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/gtkhtml-embedded.h gtkhtml-3.24.4/gtkhtml/gtkhtml-embedded.h
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml-embedded.h  2008-07-18 08:18:37.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml-embedded.h  2008-10-16 10:00:55.000000000 +0200
+@@ -54,11 +54,13 @@
+         GtkBinClass parent_class;
+         void (*changed)(GtkHTMLEmbedded *);
+         void (*draw_gdk)(GtkHTMLEmbedded *, GdkPixmap *, GdkGC *,
+                          gint, gint);
++#ifndef DISABLE_PRINTING
+         void (*draw_print)(GtkHTMLEmbedded *, GtkPrintContext *);
++#endif /* ndef DISABLE_PRINTING */
+ };
+ /* FIXME: There needs to be a way for embedded objects in forms to encode
+    themselves for a form */
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2008-08-18 06:54:55.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2008-10-16 10:49:41.000000000 +0200
+@@ -208,11 +208,11 @@
+ /* Animated Images */
+ void                       gtk_html_set_animate                   (GtkHTML                   *html,
+                                                                  gboolean                   animate);
+ gboolean                   gtk_html_get_animate                   (const GtkHTML             *html);
+-
++#ifndef DISABLE_PRINTING
+ /* Printing support.  */
+ void                     gtk_html_print_page_with_header_footer (GtkHTML                   *html,
+                                                                  GtkPrintContext           *context,
+                                                                  gdouble                    header_height,
+                                                                  gdouble                    footer_height,
+@@ -233,11 +233,11 @@
+                                                                  GtkHTMLPrintCalcHeight      calc_footer_height,
+                                                                  GtkHTMLPrintDrawFunc        draw_header,
+                                                                  GtkHTMLPrintDrawFunc        draw_footer,
+                                                                  gpointer                    user_data,
+                                                                  GError                    **error);
+-
++#endif /* ndef DISABLE_PRINTING */
+ /* Title.  */
+ const gchar               *gtk_html_get_title                     (GtkHTML                   *html);
+ void                       gtk_html_set_title                     (GtkHTML                   *html, const char *title);
+ /* Anchors.  */
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/gtkhtml-types.h gtkhtml-3.24.4/gtkhtml/gtkhtml-types.h
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml-types.h     2008-04-11 13:14:42.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml-types.h     2008-10-16 10:47:22.000000000 +0200
+@@ -49,11 +49,11 @@
+ /* FIXME 1st param should be Engine */
+ typedef gboolean (* GtkHTMLSaveReceiverFn)   (gpointer     engine,
+                                             const gchar *data,
+                                             size_t       len,
+                                             gpointer     user_data);
+-
++#ifndef DISABLE_PRINTING
+ typedef gint    (*GtkHTMLPrintCalcHeight) (GtkHTML *html,
+                                          GtkPrintOperation *operation,
+                                            GtkPrintContext *context,
+                                            gpointer user_data);
+ typedef void    (*GtkHTMLPrintDrawFunc)   (GtkHTML *html,
+@@ -63,7 +63,7 @@
+                                          PangoRectangle *rec,
+                                          gpointer user_data);
+ typedef void (*GtkHTMLPrintCallback) (GtkHTML *html, GtkPrintContext *print_context,
+                                     gdouble x, gdouble y, gdouble width, gdouble height, gpointer user_data);
+-
++#endif /* ndef DISABLE_PRINTING */
+ #endif
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2008-10-16 09:59:50.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2008-10-16 10:02:08.000000000 +0200
+@@ -48,11 +48,13 @@
+ #include "htmlengine-edit.h"
+ #include "htmlengine-edit-cursor.h"
+ #include "htmlengine-edit-movement.h"
+ #include "htmlengine-edit-cut-and-paste.h"
+ #include "htmlengine-edit-selection-updater.h"
++#ifndef DISABLE_PRINTING
+ #include "htmlengine-print.h"
++#endif /* ndef DISABLE_PRINTING */
+ #include "htmlcolor.h"
+ #include "htmlinterval.h"
+ #include "htmlobject.h"
+ #include "htmlsettings.h"
+ #include "htmltext.h"
+@@ -4382,13 +4384,13 @@
+       engine->selection_updater = html_engine_edit_selection_updater_new (engine);
+       engine->search_info = NULL;
+       engine->need_spell_check = FALSE;
+-
++#ifndef DISABLE_PRINTING
+       html_engine_print_set_min_split_index (engine, .75);
+-
++#endif /* ndef DISABLE_PRINTING */
+       engine->block = FALSE;
+       engine->block_images = FALSE;
+       engine->save_data = FALSE;
+       engine->saved_step_count = -1;
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/htmlengine-print.c gtkhtml-3.24.4/gtkhtml/htmlengine-print.c
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-print.c  2008-04-11 13:14:42.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-print.c  2008-10-16 10:01:30.000000000 +0200
+@@ -18,10 +18,13 @@
+    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02110-1301, USA.
+ */
+ #include <config.h>
++
++#ifndef DISABLE_PRINTING
++
+ #include <gtk/gtk.h>
+ #include <glib/gi18n-lib.h>
+ #include "gtkhtml.h"
+ #include "gtkhtmldebug.h"
+ #include "gtkhtml-private.h"
+@@ -511,5 +514,7 @@
+               operation, "end-print",
+               G_CALLBACK (engine_print_end_print), &data);
+       return gtk_print_operation_run (operation, action, parent, error);
+ }
++
++#endif /* ndef DISABLE_PRINTING */
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/htmlengine-print.h gtkhtml-3.24.4/gtkhtml/htmlengine-print.h
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-print.h  2008-04-11 13:14:42.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-print.h  2008-10-16 10:46:24.000000000 +0200
+@@ -20,10 +20,12 @@
+ */
+ #ifndef _HTMLENGINE_PRINT_H
+ #define _HTMLENGINE_PRINT_H
++#ifndef DISABLE_PRINTING
++
+ #include <gtk/gtk.h>
+ #include "htmlengine.h"
+ void  html_engine_print               (HTMLEngine *engine,
+                                        GtkPrintContext *context,
+@@ -48,7 +50,7 @@
+                                   GtkHTMLPrintCalcHeight calc_footer_height,
+                                   GtkHTMLPrintDrawFunc draw_header,
+                                   GtkHTMLPrintDrawFunc draw_footer,
+                                   gpointer user_data,
+                                   GError **error);
+-
++#endif /* ndef DISABLE_PRINTING */
+ #endif
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/htmlframe.c gtkhtml-3.24.4/gtkhtml/htmlframe.c
+--- gtkhtml-3.24.4/gtkhtml/htmlframe.c 2008-07-18 08:18:37.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlframe.c 2008-10-16 10:48:54.000000000 +0200
+@@ -165,11 +165,11 @@
+       gint tx, gint ty)
+ {
+       HTMLFrame   *frame  = HTML_FRAME (o);
+       HTMLEngine   *e       = GTK_HTML (frame->html)->engine;
+       GdkRectangle paint;
+-
++#ifndef DISABLE_PRINTING
+       if (GTK_OBJECT_TYPE (e->painter) == HTML_TYPE_PRINTER) {
+               gint pixel_size = html_painter_get_pixel_size (e->painter);
+               if (!html_object_intersect (o, &paint, x, y, width, height))
+                       return;
+@@ -178,25 +178,30 @@
+                                 x, y,
+                                 width - pixel_size * (html_engine_get_left_border (e) + html_engine_get_right_border (e)),
+                                 height - pixel_size * (html_engine_get_top_border (e) + html_engine_get_bottom_border (e)),
+                                 tx + pixel_size * html_engine_get_left_border (e), ty + pixel_size * html_engine_get_top_border (e));
+       } else
++#endif /* ndef DISABLE_PRINTING */
+               (*HTML_OBJECT_CLASS (parent_class)->draw) (o, p, x, y, width, height, tx, ty);
+ }
+ static void
+ set_painter (HTMLObject *o, HTMLPainter *painter)
+ {
+       HTMLFrame *frame;
+       frame = HTML_FRAME (o);
+-      if (G_OBJECT_TYPE (GTK_HTML (frame->html)->engine->painter) != HTML_TYPE_PRINTER) {
++#ifndef DISABLE_PRINTING
++      if (G_OBJECT_TYPE (GTK_HTML (frame->html)->engine->painter) != HTML_TYPE_PRINTER)
++#endif /* ndef DISABLE_PRINTING */
+               frame_set_gdk_painter (frame, GTK_HTML (frame->html)->engine->painter);
+-      }
+-
++#ifdef DISABLE_PRINTING
++    html_engine_set_painter (GTK_HTML (frame->html)->engine, frame->gdk_painter);
++#else /* def DISABLE_PRINTING */
+       html_engine_set_painter (GTK_HTML (frame->html)->engine,
+                                GTK_OBJECT_TYPE (painter) != HTML_TYPE_PRINTER ? frame->gdk_painter : painter);
++#endif
+ }
+ static void
+ forall (HTMLObject *self,
+       HTMLEngine *e,
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/htmliframe.c gtkhtml-3.24.4/gtkhtml/htmliframe.c
+--- gtkhtml-3.24.4/gtkhtml/htmliframe.c        2008-07-18 08:18:37.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmliframe.c        2008-10-16 10:45:41.000000000 +0200
+@@ -164,10 +164,11 @@
+       HTMLPainter *p,
+       gint x, gint y,
+       gint width, gint height,
+       gint tx, gint ty)
+ {
++#ifndef DISABLE_PRINTING
+       HTMLIFrame   *iframe  = HTML_IFRAME (o);
+       HTMLEngine   *e       = GTK_HTML (iframe->html)->engine;
+       GdkRectangle paint;
+       if (GTK_OBJECT_TYPE (e->painter) == HTML_TYPE_PRINTER) {
+@@ -180,25 +181,30 @@
+                                 x, y,
+                                 width - pixel_size * (html_engine_get_left_border (e) + html_engine_get_right_border (e)),
+                                 height - pixel_size * (html_engine_get_top_border (e) + html_engine_get_bottom_border (e)),
+                                 tx + pixel_size * html_engine_get_left_border (e), ty + pixel_size * html_engine_get_top_border (e));
+       } else
++#endif /* ndef DISABLE_PRINTING */
+               (*HTML_OBJECT_CLASS (parent_class)->draw) (o, p, x, y, width, height, tx, ty);
+ }
+ static void
+ set_painter (HTMLObject *o, HTMLPainter *painter)
+ {
+       HTMLIFrame *iframe;
+       iframe = HTML_IFRAME (o);
+-      if (G_OBJECT_TYPE (GTK_HTML (iframe->html)->engine->painter) != HTML_TYPE_PRINTER) {
++#ifndef DISABLE_PRINTING
++      if (G_OBJECT_TYPE (GTK_HTML (iframe->html)->engine->painter) != HTML_TYPE_PRINTER)
++#endif
+               iframe_set_gdk_painter (iframe, GTK_HTML (iframe->html)->engine->painter);
+-      }
+-
++#ifdef DISABLE_PRINTING
++    html_engine_set_painter (GTK_HTML (iframe->html)->engine, iframe->gdk_painter);
++#else /* def DISABLE_PRINTING */
+       html_engine_set_painter (GTK_HTML (iframe->html)->engine,
+                                G_OBJECT_TYPE (painter) != HTML_TYPE_PRINTER ? iframe->gdk_painter : painter);
++#endif /* ndef DISABLE_PRINTING */
+ }
+ static void
+ forall (HTMLObject *self,
+       HTMLEngine *e,
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/htmlimage.c gtkhtml-3.24.4/gtkhtml/htmlimage.c
+--- gtkhtml-3.24.4/gtkhtml/htmlimage.c 2008-06-13 05:05:58.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlimage.c 2008-10-16 10:43:40.000000000 +0200
+@@ -383,14 +383,14 @@
+       if (painter->widget && GTK_IS_HTML (painter->widget))
+               e = html_object_engine (HTML_OBJECT (image), GTK_HTML (painter->widget)->engine);
+       else
+               return;
+-
++#ifndef DISABLE_PRINTING
+       if (HTML_IS_PRINTER (painter))
+               return;
+-
++#endif
+       p = HTML_GDK_PAINTER (painter);
+       /* printf ("draw_image_focus\n"); */
+       gdk_gc_set_foreground (p->gc, &html_colorset_get_color_allocated (e->settings->color_set,
+                                                                         painter, HTMLTextColor)->color);
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/htmlprinter.c gtkhtml-3.24.4/gtkhtml/htmlprinter.c
+--- gtkhtml-3.24.4/gtkhtml/htmlprinter.c       2008-07-18 08:18:37.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlprinter.c       2008-10-16 10:02:28.000000000 +0200
+@@ -18,10 +18,13 @@
+    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02110-1301, USA.
+ */
+ #include <config.h>
++
++#ifndef DISABLE_PRINTING
++
+ #include "gtkhtml-compat.h"
+ #include <string.h>
+ #include <ctype.h>
+@@ -721,5 +724,7 @@
+       painter = HTML_PAINTER (printer);
+       printer->scale = scale;
+       painter->engine_to_pango = scale;
+ }
++
++#endif /* ndef DISABLE_PRINTING */
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/htmlprinter.h gtkhtml-3.24.4/gtkhtml/htmlprinter.h
+--- gtkhtml-3.24.4/gtkhtml/htmlprinter.h       2008-07-18 08:18:37.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlprinter.h       2008-10-16 10:02:34.000000000 +0200
+@@ -23,10 +23,12 @@
+ #define _HTMLPRINTER_H
+ #include <gtk/gtk.h>
+ #include "htmlpainter.h"
++#ifndef DISABLE_PRINTING
++
+ #define HTML_TYPE_PRINTER                 (html_printer_get_type ())
+ #define HTML_PRINTER(obj)                 (G_TYPE_CHECK_INSTANCE_CAST((obj), HTML_TYPE_PRINTER, HTMLPrinter))
+ #define HTML_PRINTER_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), HTML_TYPE_PRINTER, HTMLPrinterClass))
+ #define HTML_IS_PRINTER(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), HTML_TYPE_PRINTER))
+ #define HTML_IS_PRINTER_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), HTML_TYPE_PRINTER))
+@@ -56,6 +58,7 @@
+ gdouble      html_printer_scale_to_gnome_print        (HTMLPrinter       *printer,
+                                                      gint               x);
+ void         html_printer_set_scale                   (HTMLPrinter       *printer,
+                                                      gdouble            scale);
++#endif /* ndef DISABLE_PRINTING */
+ #endif /* _HTMLPRINTER_H */
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/htmltextslave.c gtkhtml-3.24.4/gtkhtml/htmltextslave.c
+--- gtkhtml-3.24.4/gtkhtml/htmltextslave.c     2008-04-11 13:14:42.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmltextslave.c     2008-10-16 10:42:53.000000000 +0200
+@@ -860,14 +860,14 @@
+       if (painter->widget && GTK_IS_HTML (painter->widget))
+               e = html_object_engine (HTML_OBJECT (slave->owner), GTK_HTML (painter->widget)->engine);
+       else
+               return;
+-
++#ifndef DISABLE_PRINTING
+       if (HTML_IS_PRINTER (painter))
+               return;
+-
++#endif /* ndef DISABLE_PRINTING */
+       p = HTML_GDK_PAINTER (painter);
+       /* printf ("draw_text_focus\n"); */
+       gdk_gc_set_foreground (p->gc, &html_colorset_get_color_allocated (e->settings->color_set,
+                                                                         painter, HTMLTextColor)->color);
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/libgtkhtml.pc.in gtkhtml-3.24.4/gtkhtml/libgtkhtml.pc.in
+--- gtkhtml-3.24.4/gtkhtml/libgtkhtml.pc.in    2008-04-11 13:14:42.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/libgtkhtml.pc.in    2008-10-16 10:02:54.000000000 +0200
+@@ -8,6 +8,6 @@
+ Name: libgtkhtml
+ Description: libgtkhtml
+ Requires: @GTKHTML_MODULES@
+ Version: @VERSION@
+ Libs: -L${libdir} -lgtkhtml-@GTKHTML_API_VERSION@
+-Cflags: -I${includedir}/libgtkhtml-@GTKHTML_API_VERSION@
++Cflags: -I${includedir}/libgtkhtml-@GTKHTML_API_VERSION@ @PC_CFLAGS@
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/Makefile.am gtkhtml-3.24.4/gtkhtml/Makefile.am
+--- gtkhtml-3.24.4/gtkhtml/Makefile.am 2008-05-12 09:18:34.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/Makefile.am 2008-10-16 10:33:55.000000000 +0200
+@@ -207,22 +207,25 @@
+       htmlengine-edit-table.h                 \
+       $(PLATFORM_DEP_SOURCES)                 \
+       $(NULL)
+ libgtkhtml_3_14_la_LDFLAGS = -version-info $(GTKHTML_CURRENT):$(GTKHTML_REVISION):$(GTKHTML_AGE) -no-undefined
+-libgtkhtml_3_14_la_LIBADD = $(GTKHTML_LIBS) ../a11y/libgtkhtml-a11y.la $(GAIL_LIBS) $(REGEX_LIBS)
++libgtkhtml_3_14_la_LIBADD = $(GTKHTML_LIBS) $(A11Y_LA) $(GAIL_LIBS) $(REGEX_LIBS)
+ dist-hook:
+       mkdir $(distdir)/tests
+       cp -f $(srcdir)/tests/*.html $(distdir)/tests
+       cp -f $(srcdir)/tests/*.jpg $(distdir)/tests
+ if HAVE_SOUP
+ test_programs = testgtkhtml
+ endif
+-noinst_PROGRAMS = $(test_programs) gtest test-suite test-stress
++if HAVE_PRINTING
++gnome_test_programs = gtest test-suite test-stress
++endif
++noinst_PROGRAMS = $(test_programs) $(gnome_test_programs) 
+ testgtkhtml_SOURCES =                 \
+       testgtkhtml.c           \
+       htmlurl.h               \
+       htmlurl.c
+diff -r -U5 gtkhtml-3.24.4/Makefile.am gtkhtml-3.24.4/Makefile.am
+--- gtkhtml-3.24.4/Makefile.am 2008-08-01 08:36:01.000000000 +0200
++++ gtkhtml-3.24.4/Makefile.am 2008-10-16 10:03:52.000000000 +0200
+@@ -1,11 +1,10 @@
+ SUBDIRS =                                     \
+-      a11y                                    \
++      $(A11Y_DIR)                             \
+       gtkhtml                                 \
+-      components                              \
+-      art                                     \
+-      po
++      $(EDITOR_DIR)                   \
++      art
+ CLEANFILES =                                  \
+       po/.intltool-merge-cache
+ DISTCLEANFILES =                              \
diff --git a/gtkhtml/gtkhtml_100_dependency_removal_cleaning.diff b/gtkhtml/gtkhtml_100_dependency_removal_cleaning.diff
new file mode 100644 (file)
index 0000000..aedb5e6
--- /dev/null
@@ -0,0 +1,140 @@
+# Set some defaults to off without entirely yanking them
+#
+# Copyright (C) 2006 - 2007 Nokia Corporation.
+# This file is distributed under the terms of GNU LGPL license, either version 2
+# of the License, or (at your option) any later version.
+#
+diff -Nru gtkhtml-3.24.4/autogen.sh gtkhtml-3.24.4.mod8/autogen.sh
+diff -Nru gtkhtml-3.24.4/autogen.sh gtkhtml-3.24.4.mod8/autogen.sh
+--- gtkhtml-3.24.4/autogen.sh  1970-01-01 02:00:00.000000000 +0200
+--- gtkhtml-3.24.4/autogen.sh  1970-01-01 02:00:00.000000000 +0200
++++ gtkhtml-3.24.4/autogen.sh  2007-02-16 11:21:27.000000000 +0200
++++ gtkhtml-3.24.4/autogen.sh  2007-02-16 11:21:27.000000000 +0200
+@@ -0,0 +1,7 @@
++#!/bin/sh
++
++set -x
++aclocal
++autoconf
++autoheader
++automake --add-missing --foreign
+d
+diff -r -U5 gtkhtml-3.24.4/configure.in gtkhtml-3.24.4/configure.in
+--- gtkhtml-3.24.4/configure.in        2008-10-16 10:57:08.000000000 +0200
++++ gtkhtml-3.24.4/configure.in        2008-10-16 11:05:40.000000000 +0200
+@@ -84,12 +84,12 @@
+ dnl
+ dnl do we want a11y support?
+ dnl
+ GAIL_MODULES=""
+ AC_ARG_ENABLE(a11y,
+-             [ --enable-a11y   Enable Accessibility (requires gail) [default=yes]],
+-             [ac_cv_enable_a11y=$enableval],[ac_cv_enable_a11y=yes])
++             [ --enable-a11y   Enable Accessibility (requires gail) [default=no]],
++             [ac_cv_enable_a11y=$enableval],[ac_cv_enable_a11y=no])
+ AC_MSG_CHECKING([whether to enable a11y])
+ if test "$ac_cv_enable_a11y" = yes; then
+        AC_MSG_RESULT(yes)
+        GAIL_MODULES="gail >= gail_minimum_version"
+        PKG_CHECK_MODULES(GAIL, $GAIL_MODULES)
+@@ -111,12 +111,12 @@
+ dnl
+ dnl do we want printing support?
+ dnl
+ GNOMEPRINT_MODULES=""
+ AC_ARG_ENABLE(printing,
+-             [ --enable-printing Enable Printing [default=yes]],
+-             [ac_cv_enable_printing=$enableval],[ac_cv_enable_printing=yes])
++             [ --enable-printing Enable Printing [default=no]],
++             [ac_cv_enable_printing=$enableval],[ac_cv_enable_printing=no])
+ AC_MSG_CHECKING([whether to enable printing])
+ if test "$ac_cv_enable_printing" = yes; then
+        AC_MSG_RESULT(yes)
+        GNOME_TEST_PROGRAMS="gtest test-suite test-stress"
+ else
+@@ -130,12 +130,12 @@
+ dnl
+ dnl do we want gnome support?
+ dnl
+ GNOME_MODULES=""
+ AC_ARG_ENABLE(gnome,
+-             [ --enable-gnome Enable Gnome  (requires many things) [default=yes]],
+-             [ac_cv_enable_gnome=$enableval],[ac_cv_enable_gnome=yes])
++             [ --enable-gnome Enable Gnome  (requires many things) [default=no]],
++             [ac_cv_enable_gnome=$enableval],[ac_cv_enable_gnome=no])
+ AC_MSG_CHECKING([whether to enable gnome])
+ if test "$ac_cv_enable_gnome" = yes; then
+        AC_MSG_RESULT(yes)
+        GNOME_MODULES="libgnomeui-2.0 >= libgnomeui_minimum_version"
+@@ -198,14 +198,30 @@
+ dnl **********************************
+ dnl soup for testgtkhtml
+ dnl **********************************
+-PKG_CHECK_MODULES(SOUP, libsoup-2.4, have_soup="yes", have_soup="no")
++AC_ARG_ENABLE(soup,
++             [ --enable-soup Enable soup [default=no]],
++             [ac_cv_enable_soup=$enableval],[ac_cv_enable_soup=no])
++AC_MSG_CHECKING([whether to enable soup])
++if test "$ac_cv_enable_soup" = yes; then
++       AC_MSG_RESULT(yes)
++       PKG_CHECK_MODULES(SOUP, libsoup-2.4, have_soup="yes", have_soup="no")
++       if test "x$have_soup" = "xno"; then
++               PKG_CHECK_MODULES(SOUP, soup-2.0 >= 0.7.9, [have_soup="yes"
++                                                  AC_DEFINE(HAVE_OLD_SOUP)],
++                                         have_soup="no")
++       fi
++       AC_SUBST(SOUP_CFLAGS)
++       AC_SUBST(SOUP_LIBS)
++else
++       have_soup="no"
++       AC_MSG_RESULT(no)
++       AC_DEFINE(DISABLE_SOUP)
++fi
+ AM_CONDITIONAL(HAVE_SOUP, test x$have_soup != xno)
+-AC_SUBST(SOUP_CFLAGS)
+-AC_SUBST(SOUP_LIBS)
+ dnl **************************************************
+ dnl * iso-codes
+ dnl **************************************************
+@@ -313,8 +329,9 @@
+        accessibility support:          $ac_cv_enable_a11y
+        gnome-print support:            $ac_cv_enable_printing
+        gnome support:                  $ac_cv_enable_gnome
+        bonobo-editor component:        $bonobo_editor
++       soup:                           $ac_cv_enable_soup
+       Editor component type:          ${GNOME_GTKHTML_EDITOR_TYPE}
+ "
+Only in gtkhtml-3.24.4/gtkhtml: gtkhtml.c.orig
+Only in gtkhtml-3.24.4/gtkhtml: htmlengine.c.orig
+diff -r -U5 gtkhtml-3.24.4/Makefile.am gtkhtml-3.24.4/Makefile.am
+--- gtkhtml-3.24.4/Makefile.am 2008-10-16 10:57:08.000000000 +0200
++++ gtkhtml-3.24.4/Makefile.am 2008-10-16 11:07:40.000000000 +0200
+@@ -43,6 +43,20 @@
+       BUGS                                    \
+       intltool-extract.in                     \
+       intltool-update.in                      \
+       intltool-merge.in
+-DISTCHECK_CONFIGURE_FLAGS = --with-bonobo-editor
++#DISTCHECK_CONFIGURE_FLAGS = --with-bonobo-editor
++#AK/22-12-05: common way to create .deb packages (Scratchbox)
++#
++deb:
++      dpkg-buildpackage -rfakeroot -uc -us -sa -D
++
++# Use "dch -a" to add comment to debian/changelog
++# Use "dch -v xx" to add new version to debian/changelog
++#
++# DEBEMAIL and DEBFULLNAME better be defined...! :)
++#
++# DO NOT MANUALLY EDIT THE debian/changelog.
++#
++ver:
++      dch -v 999
diff --git a/gtkhtml/gtkhtml_110_panning.diff b/gtkhtml/gtkhtml_110_panning.diff
new file mode 100644 (file)
index 0000000..d66dcf6
--- /dev/null
@@ -0,0 +1,155 @@
+# Initial panning support
+#
+# Copyright (C) 2006 - 2007 Nokia Corporation.
+# This file is distributed under the terms of GNU LGPL license, either version 2
+# of the License, or (at your option) any later version.
+#
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-15 17:27:50.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-15 17:27:50.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-15 17:27:50.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-15 17:27:50.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:40:30.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:40:30.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:40:30.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:40:30.000000000 +0200
+@@ -1679,6 +1679,35 @@
+       engine = GTK_HTML (widget)->engine;
+       if (GTK_HTML (widget)->in_selection_drag && html_engine_get_editable (engine))
+               html_engine_jump_at (engine, x, y);
++
++      /* (TL 18-Nov-05) Added panning feature */
++      if (GTK_HTML (widget)->panning) {
++              GtkAdjustment *adj;
++              gint dx, dy;
++              gdouble value;
++
++              dx = x - GTK_HTML (widget)->lastx;
++              dy = y - GTK_HTML (widget)->lasty;
++
++              /* Vertical panning */
++              adj = gtk_layout_get_vadjustment(GTK_LAYOUT(widget));
++              value = adj->value - (gdouble) dy;
++              if (value < adj->lower)
++                      value = adj->lower;
++              else if (value > (adj->upper - adj->page_size))
++                      value = adj->upper - adj->page_size;
++              gtk_adjustment_set_value(adj, value);
++
++              /* Horizontal panning */
++              adj = gtk_layout_get_hadjustment(GTK_LAYOUT(widget));
++              value = adj->value - (gdouble) dx;
++              if (value < adj->lower)
++                      value = adj->lower;
++              else if (value > (adj->upper - adj->page_size))
++                      value = adj->upper - adj->page_size;
++              gtk_adjustment_set_value(adj, value);
++      }
++
+       return TRUE;
+ }
+@@ -1790,7 +1819,13 @@
+                       }
+                       break;
+               case 1:
+-                      html->in_selection_drag = TRUE;
++                      /*html->in_selection_drag = TRUE;*/
++                      /* (TL 18-Nov-05) First click starts panning, not selection */
++                      html->in_selection_drag = FALSE;
++                      html->panning = TRUE;
++                      html->lastx = x;
++                      html->lasty = y;
++
+                       if (html_engine_get_editable (engine)) {
+                               HTMLObject *obj;
+@@ -1856,13 +1891,19 @@
+               }
+       } else if (event->button == 1 && html->allow_selection) {
+               if (event->type == GDK_2BUTTON_PRESS) {
+-                      html->in_selection_drag = FALSE;
+-                      gtk_html_select_word (html);
++                      /*html->in_selection_drag = FALSE;
++                      gtk_html_select_word (html);*/
++                      /* (TL 18-Nov-05) Second click starts selection and stops panning */
++                      html->in_selection_drag = TRUE;
++                      html->panning = FALSE;
+                       html->in_selection = TRUE;
+               }
+               else if (event->type == GDK_3BUTTON_PRESS) {
+-                      html->in_selection_drag = FALSE;
+-                      gtk_html_select_line (html);
++                      /*html->in_selection_drag = FALSE;
++                      gtk_html_select_line (html);*/
++                      /* (TL 18-Nov-05) Third click starts selection and stops panning */
++                      html->in_selection_drag = TRUE;
++                      html->panning = FALSE;
+                       html->in_selection = TRUE;
+               }
+       }
+@@ -1909,6 +1950,8 @@
+                       html_engine_jump_at (engine, x, y); 
+               html->in_selection_drag = FALSE;
++              /* (TL 18-Nov-05) Stop panning on button release */
++              html->panning = FALSE;
+               if (!html->priv->dnd_in_progress
+                   && html->pointer_url != NULL && ! html->in_selection) {
+@@ -1951,7 +1994,7 @@
+       }
+       html->priv->need_im_reset = TRUE;
+-      gtk_im_context_focus_in (html->priv->im_context);
++      //gtk_im_context_focus_in (html->priv->im_context); // (TL 20-Oct-05) Kludge to focus issues
+       gtk_html_keymap_direction_changed (gdk_keymap_get_for_display (gtk_widget_get_display (widget)),
+                                          html);
+@@ -3448,6 +3491,11 @@
+       html->selection_x1 = 0;
+       html->selection_y1 = 0;
++      /* (TL 18-Nov-05) For panning */
++      html->panning = FALSE;
++      html->lastx = 0;
++      html->lasty = 0;
++
+       html->in_selection = FALSE;
+       html->in_selection_drag = FALSE;
+Only in gtkhtml-3.24.4/gtkhtml: gtkhtml.c.orig
+Only in gtkhtml-3.24.4/gtkhtml: gtkhtml.c.orig
+Only in gtkhtml-3.24.4/gtkhtml: gtkhtml.c.orig
+Only in gtkhtml-3.24.4/gtkhtml: gtkhtml.c.orig
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-15 17:42:33.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-15 17:42:33.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-15 17:42:33.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-15 17:42:33.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:40:30.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:40:30.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:40:30.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:40:30.000000000 +0200
+@@ -58,6 +58,11 @@
+       gint selection_x1, selection_y1;
++      /* (TL 18-Nov-05) Panning variables */
++      gboolean panning;
++      gint lastx;
++      gint lasty;
++
+       guint in_selection : 1;
+       guint in_selection_drag : 1;
+Only in gtkhtml-3.24.4/gtkhtml: gtkhtml.h.orig
+Only in gtkhtml-3.24.4/gtkhtml: gtkhtml.h.orig
+Only in gtkhtml-3.24.4/gtkhtml: gtkhtml.h.orig
+Only in gtkhtml-3.24.4/gtkhtml: gtkhtml.h.orig
diff --git a/gtkhtml/gtkhtml_120_text_selection.diff b/gtkhtml/gtkhtml_120_text_selection.diff
new file mode 100644 (file)
index 0000000..7b8a89c
--- /dev/null
@@ -0,0 +1,104 @@
+# Double-click initiates text selection
+#
+# Copyright (C) 2006 - 2007 Nokia Corporation.
+# This file is distributed under the terms of GNU LGPL license, either version 2
+# of the License, or (at your option) any later version.
+#
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:40:30.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:40:30.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:40:30.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:40:30.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:56:22.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:56:22.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:56:22.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 15:56:22.000000000 +0200
+@@ -193,6 +193,9 @@
+ /* Interval for scrolling during selection.  */
+ #define SCROLL_TIMEOUT_INTERVAL 10
++/* Mouse move threshold for doubleclick check */
++#define MOUSE_DBLCLK_THRESHOLD 10
++
\f
+ GtkHTMLParagraphStyle
+ clueflow_style_to_paragraph_style (HTMLClueFlowStyle style, HTMLListType item_type)
+@@ -1673,6 +1676,18 @@
+       gdk_window_get_pointer (GTK_LAYOUT (widget)->bin_window, &x, &y, NULL);
++      /* If there is only a small motion from the origin and simple 
++         doubleclick is active, abort the motion, otherwise clear simple_dblclick flag */
++      if (GTK_HTML (widget)->simple_dblclick) {
++          GtkHTML *html = GTK_HTML (widget);
++          
++          if (abs(x - html->selection_x1) <= MOUSE_DBLCLK_THRESHOLD && 
++              abs(y - html->selection_y1) <= MOUSE_DBLCLK_THRESHOLD)
++              return TRUE;
++              
++          html->simple_dblclick = FALSE;
++      }
++      
+       if (!mouse_change_pos (widget, window, x, y, event->state))
+               return FALSE;
+@@ -1897,6 +1912,10 @@
+                       html->in_selection_drag = TRUE;
+                       html->panning = FALSE;
+                       html->in_selection = TRUE;
++                      /* Check for simple double click, for selecting a word */
++                      html->simple_dblclick = TRUE;
++                      html->selection_x1 = x;
++                      html->selection_y1 = y;
+               }
+               else if (event->type == GDK_3BUTTON_PRESS) {
+                       /*html->in_selection_drag = FALSE;
+@@ -1935,7 +1954,8 @@
+       engine =  html->engine;
+-      if (html->in_selection) {
++      /* If it is a simple doubleclick don't allow the selection */
++      if (html->in_selection && !html->simple_dblclick) {
+               html_engine_update_selection_active_state (html->engine, html->priv->event_time);
+               if (html->in_selection_drag)
+                       html_engine_select_region (engine, html->selection_x1, html->selection_y1,
+@@ -1961,6 +1981,12 @@
+                               html_text_set_link_visited (HTML_TEXT(focus_object), focus_object_offset, html->engine, TRUE);
+                       }   
+               }
++              
++              /* If it was a simple doubleclick select a word */
++              if (html->simple_dblclick) {
++                  html->simple_dblclick = FALSE;
++                  gtk_html_select_word(html);
++              }
+       }
+       html->in_selection = FALSE;
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:40:30.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:40:30.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:40:30.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:40:30.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:56:22.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:56:22.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:56:22.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-02-16 15:56:22.000000000 +0200
+@@ -68,6 +68,10 @@
+       guint debug : 1;
+       guint allow_selection : 1;
++      
++      /* Dbl-clk variables */
++      
++      guint simple_dblclick : 1;
+       guint hadj_connection;
+       guint vadj_connection;
diff --git a/gtkhtml/gtkhtml_140_const_patch.diff b/gtkhtml/gtkhtml_140_const_patch.diff
new file mode 100644 (file)
index 0000000..2d47322
--- /dev/null
@@ -0,0 +1,157 @@
+# Declare some variables as const to silence the compiler
+#
+# Copyright (C) 2006 - 2007 Nokia Corporation.
+# This file is distributed under the terms of GNU LGPL license, either version 2
+# of the License, or (at your option) any later version.
+#
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 16:29:01.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 16:29:01.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 16:29:01.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 16:29:01.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-16 16:44:08.000000000 +0200
+@@ -92,7 +92,7 @@
+       DND_TARGET_TYPE_STRING,
+ };
+-static GtkTargetEntry dnd_link_sources [] = {
++static const GtkTargetEntry dnd_link_sources [] = {
+       { "message/rfc822", 0, DND_TARGET_TYPE_MESSAGE_RFC822 },
+       { "x-uid-list", 0, DND_TARGET_TYPE_X_UID_LIST },
+       { "text/uri-list", 0, DND_TARGET_TYPE_TEXT_URI_LIST },
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c        2007-02-12 08:57:38.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c        2007-02-12 08:57:38.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c        2007-02-12 08:57:38.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c        2007-02-12 08:57:38.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c        2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c        2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c        2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml-properties.c        2007-02-16 16:44:08.000000000 +0200
+@@ -136,7 +136,7 @@
+ /* enums */
+-static GEnumValue _gtk_html_cursor_skip_values[] = {
++static const GEnumValue _gtk_html_cursor_skip_values[] = {
+       { GTK_HTML_CURSOR_SKIP_ONE,  "GTK_HTML_CURSOR_SKIP_ONE",  "one" },
+       { GTK_HTML_CURSOR_SKIP_WORD, "GTK_HTML_CURSOR_SKIP_WORD", "word" },
+       { GTK_HTML_CURSOR_SKIP_PAGE, "GTK_HTML_CURSOR_SKIP_WORD", "page" },
+@@ -155,7 +155,7 @@
+       return cursor_skip_type;
+ }
+-static GEnumValue _gtk_html_command_values[] = {
++static const GEnumValue _gtk_html_command_values[] = {
+       { GTK_HTML_COMMAND_UNDO,  "GTK_HTML_COMMAND_UNDO",  "undo" },
+       { GTK_HTML_COMMAND_REDO,  "GTK_HTML_COMMAND_REDO",  "redo" },
+       { GTK_HTML_COMMAND_COPY,  "GTK_HTML_COMMAND_COPY",  "copy" },
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c    2007-02-09 21:54:58.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c    2007-02-09 21:54:58.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c    2007-02-09 21:54:58.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c    2007-02-09 21:54:58.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c    2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c    2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c    2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cursor.c    2007-02-16 16:44:08.000000000 +0200
+@@ -35,18 +35,18 @@
+ #define BLINK_TIMEOUT 500
+-static GdkColor table_stipple_active_on      = { 0, 0,      0,      0xffff };
+-static GdkColor table_stipple_active_off     = { 0, 0xffff, 0xffff, 0xffff };
+-static GdkColor table_stipple_non_active_on  = { 0, 0xaaaa, 0xaaaa, 0xaaaa };
+-static GdkColor table_stipple_non_active_off = { 0, 0xffff, 0xffff, 0xffff };
+-
+-static GdkColor cell_stipple_active_on      = { 0, 0x7fff, 0x7fff, 0 };
+-static GdkColor cell_stipple_active_off     = { 0, 0xffff, 0xffff, 0xffff };
+-static GdkColor cell_stipple_non_active_on  = { 0, 0x7aaa, 0x7aaa, 0x7aaa };
+-static GdkColor cell_stipple_non_active_off = { 0, 0xffff, 0xffff, 0xffff };
++static const GdkColor table_stipple_active_on      = { 0, 0,      0,      0xffff };
++static const GdkColor table_stipple_active_off     = { 0, 0xffff, 0xffff, 0xffff };
++static const GdkColor table_stipple_non_active_on  = { 0, 0xaaaa, 0xaaaa, 0xaaaa };
++static const GdkColor table_stipple_non_active_off = { 0, 0xffff, 0xffff, 0xffff };
++
++static const GdkColor cell_stipple_active_on      = { 0, 0x7fff, 0x7fff, 0 };
++static const GdkColor cell_stipple_active_off     = { 0, 0xffff, 0xffff, 0xffff };
++static const GdkColor cell_stipple_non_active_on  = { 0, 0x7aaa, 0x7aaa, 0x7aaa };
++static const GdkColor cell_stipple_non_active_off = { 0, 0xffff, 0xffff, 0xffff };
+-static GdkColor image_stipple_active_on      = { 0, 0xffff, 0,      0 };
+-static GdkColor image_stipple_active_off     = { 0, 0xffff, 0xffff, 0xffff };
++static const GdkColor image_stipple_active_on      = { 0, 0xffff, 0,      0 };
++static const GdkColor image_stipple_active_off     = { 0, 0xffff, 0xffff, 0xffff };
+ void
+ html_engine_hide_cursor  (HTMLEngine *engine)
+@@ -110,7 +110,7 @@
+ static void
+ draw_cursor_rectangle (HTMLEngine *e, gint x1, gint y1, gint x2, gint y2,
+-                     GdkColor *on_color, GdkColor *off_color,
++                     const GdkColor *on_color, const GdkColor *off_color,
+                      gint offset)
+ {
+       GdkGC *gc;
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c     2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c     2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c     2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c     2007-01-03 17:19:57.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c     2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c     2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c     2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-edit-cut-and-paste.c     2007-02-16 16:44:08.000000000 +0200
+@@ -1253,9 +1253,9 @@
+       html_engine_thaw (e);
+ }
+-static char *picto_chars = "DO)(|/PQ\0:-\0:\0:-\0:\0:;=-\0:;\0:-~\0:\0:\0:-\0:\0:-\0:\0:-\0:\0:-\0:\0";
+-static gint picto_states [] = { 9, 14, 19, 27, 35, 40, 45, 50, 0, -1, 12, 0, -1, 0, -2, 17, 0, -2, 0, -3, -4, -5, 24, 0, -3, -4, 0, -6, 31, 33, 0, -6, 0, -11, 0, -8, 38, 0, -8, 0, -9, 43, 0, -9, 0, -10, 48, 0, -10, 0, -12, 53, 0, -12, 0};
+-static gchar *picto_icon_names [] = {
++static const char *picto_chars = "DO)(|/PQ\0:-\0:\0:-\0:\0:;=-\0:;\0:-~\0:\0:\0:-\0:\0:-\0:\0:-\0:\0:-\0:\0";
++static const gint picto_states [] = { 9, 14, 19, 27, 35, 40, 45, 50, 0, -1, 12, 0, -1, 0, -2, 17, 0, -2, 0, -3, -4, -5, 24, 0, -3, -4, 0, -6, 31, 33, 0, -6, 0, -11, 0, -8, 38, 0, -8, 0, -9, 43, 0, -9, 0, -10, 48, 0, -10, 0, -12, 53, 0, -12, 0};
++static const gchar *picto_icon_names [] = {
+       "stock_smiley-6",
+       "stock_smiley-5",
+       "stock_smiley-1",
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlentity.c gtkhtml-3.24.4/gtkhtml/htmlentity.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlentity.c gtkhtml-3.24.4/gtkhtml/htmlentity.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlentity.c gtkhtml-3.24.4/gtkhtml/htmlentity.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlentity.c gtkhtml-3.24.4/gtkhtml/htmlentity.c
+--- gtkhtml-3.24.4/gtkhtml/htmlentity.c        2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlentity.c        2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlentity.c        2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlentity.c        2007-01-03 17:19:57.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlentity.c        2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlentity.c        2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlentity.c        2007-02-16 16:44:08.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlentity.c        2007-02-16 16:44:08.000000000 +0200
+@@ -37,7 +37,10 @@
+ };
+ typedef struct _EntityEntry EntityEntry;
+-static EntityEntry entity_table[] = {
++/* FIXME: why not just sort these and use bsearch() instead of creating
++ * an additional glib hash table?
++ */
++static const EntityEntry entity_table[] = {
+       /* Latin1 */
+       { 160,  "nbsp" },
diff --git a/gtkhtml/gtkhtml_150_image_magnification.diff b/gtkhtml/gtkhtml_150_image_magnification.diff
new file mode 100644 (file)
index 0000000..1a01813
--- /dev/null
@@ -0,0 +1,126 @@
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2008-10-16 11:45:07.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2008-10-16 11:42:21.000000000 +0200
+@@ -6048,12 +6048,14 @@
+               html_font_manager_set_magnification (&GTK_HTML (HTML_FRAME (o)->html)->engine->painter->font_manager,
+                                                    *(gdouble *) data);
+       } else if (HTML_IS_IFRAME (o)) {
+               html_font_manager_set_magnification (&GTK_HTML (HTML_IFRAME (o)->html)->engine->painter->font_manager,
+                                                    *(gdouble *) data);
+-      } else if (HTML_IS_TEXT (o))
+-              html_text_calc_font_size (HTML_TEXT (o), e);
++      } else if (HTML_IS_TEXT (o)) {
++              html_text_calc_font_size (HTML_TEXT (o), e); 
++      } else if (HTML_IS_IMAGE (o))
++              html_image_set_magnification (HTML_IMAGE (o), (*((gdouble *)data))) ;
+ }
+ void
+ gtk_html_set_magnification (GtkHTML *html, gdouble magnification)
+ {
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/htmlimage.c gtkhtml-3.24.4/gtkhtml/htmlimage.c
+--- gtkhtml-3.24.4/gtkhtml/htmlimage.c 2008-10-16 11:45:06.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlimage.c 2008-10-16 11:42:26.000000000 +0200
+@@ -70,10 +70,17 @@
+ static gint                html_image_pointer_update            (HTMLImagePointer *ip);
+ static void                html_image_pointer_start_animation   (HTMLImagePointer *ip);
+ static GdkPixbuf *         html_image_factory_get_missing       (HTMLImageFactory *factory);
++void
++html_image_set_magnification (HTMLImage *image, gdouble new_magnification)
++{
++      if (NULL == image) return ;
++      image->magnification = new_magnification ;
++}
++
+ guint
+ html_image_get_actual_width (HTMLImage *image, HTMLPainter *painter)
+ {
+       GdkPixbufAnimation *anim = image->image_ptr->animation;
+       gint pixel_size = painter ? html_painter_get_pixel_size (painter) : 1;
+@@ -81,17 +88,17 @@
+       if (image->percent_width) {
+               /* The cast to `gdouble' is to avoid overflow (eg. when
+                    printing).  */
+               width = ((gdouble) HTML_OBJECT (image)->max_width
+-                       * image->specified_width) / 100;
++                       * image->specified_width) / 100 * image->magnification;
+       } else if (image->specified_width > 0) {
+-              width = image->specified_width * pixel_size;
++              width = image->specified_width * pixel_size * image->magnification;
+       } else if (image->image_ptr == NULL || anim == NULL) {
+-              width = DEFAULT_SIZE * pixel_size;
++              width = DEFAULT_SIZE * pixel_size * image->magnification;
+       } else {
+-              width = gdk_pixbuf_animation_get_width (anim) * pixel_size;
++              width = gdk_pixbuf_animation_get_width (anim) * pixel_size * image->magnification;
+               if (image->specified_height > 0 || image->percent_height) {
+                       double scale;
+                       scale =  ((double) html_image_get_actual_height (image, painter))
+@@ -114,17 +121,17 @@
+       if (image->percent_height) {
+               /* The cast to `gdouble' is to avoid overflow (eg. when
+                    printing).  */
+               height = ((gdouble) html_engine_get_view_height (image->image_ptr->factory->engine)
+-                        * image->specified_height) / 100;
++                        * image->specified_height) / 100 * image->magnification;
+       } else if (image->specified_height > 0) {
+-              height = image->specified_height * pixel_size;
++              height = image->specified_height * pixel_size * image->magnification;
+       } else if (image->image_ptr == NULL || anim == NULL) {
+-              height = DEFAULT_SIZE * pixel_size;
++              height = DEFAULT_SIZE * pixel_size * image->magnification;
+       } else {
+-              height = gdk_pixbuf_animation_get_height (anim) * pixel_size;
++              height = gdk_pixbuf_animation_get_height (anim) * pixel_size * image->magnification;
+               if (image->specified_width > 0 || image->percent_width) {
+                       double scale;
+                       scale = ((double) html_image_get_actual_width (image, painter))
+@@ -852,11 +859,11 @@
+       image->vspace = 0;
+       if (valign == HTML_VALIGN_NONE)
+               valign = HTML_VALIGN_BOTTOM;
+       image->valign = valign;
+-
++      image->magnification = 1.0 ;
+       image->image_ptr = html_image_factory_register (imf, image, filename, reload);
+ }
+ HTMLObject *
+ html_image_new (HTMLImageFactory *imf,
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/htmlimage.h gtkhtml-3.24.4/gtkhtml/htmlimage.h
+--- gtkhtml-3.24.4/gtkhtml/htmlimage.h 2008-06-13 05:05:58.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlimage.h 2008-10-16 11:44:16.000000000 +0200
+@@ -71,10 +71,11 @@
+       gchar *url;
+       gchar *target;
+       gchar *alt;
+       gchar *usemap;
+       gchar *final_url;
++      gdouble magnification;
+ };
+ struct _HTMLImageClass {
+       HTMLObjectClass parent_class;
+ };
+@@ -139,10 +140,12 @@
+                                           const gchar     *url);
+ guint       html_image_get_actual_width    (HTMLImage       *image,
+                                           HTMLPainter     *painter);
+ guint       html_image_get_actual_height   (HTMLImage       *image,
+                                           HTMLPainter     *painter);
++void        html_image_set_magnification   (HTMLImage       *image,
++                                          gdouble new_magnification) ;
+ /* FIXME move to htmlimagefactory.c */
+ HTMLImageFactory *html_image_factory_new                    (HTMLEngine       *e);
+ void              html_image_factory_free                   (HTMLImageFactory *factory);
+ void              html_image_factory_cleanup                (HTMLImageFactory *factory); /* Does gc etc. - removes unused image entries */
+ void              html_image_factory_stop_animations        (HTMLImageFactory *factory);
diff --git a/gtkhtml/gtkhtml_160_get_motion_hints.diff b/gtkhtml/gtkhtml_160_get_motion_hints.diff
new file mode 100644 (file)
index 0000000..d547f88
--- /dev/null
@@ -0,0 +1,27 @@
+# Use proper function (gdk_device_get_state) to get next motion hint
+#
+# Copyright (C) 2006 - 2007 Nokia Corporation.
+# This file is distributed under the terms of GNU LGPL license, either version 2
+# of the License, or (at your option) any later version.
+#
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.mod/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.mod/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.mod/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.mod/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2006-12-04 12:43:55.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2006-12-04 12:43:55.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2006-12-04 12:43:55.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2006-12-04 12:43:55.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2006-12-05 09:09:51.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2006-12-05 09:09:51.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2006-12-05 09:09:51.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2006-12-05 09:09:51.000000000 +0200
+@@ -1611,6 +1611,8 @@
+       widget = shift_to_iframe_parent (widget, &x, &y);
+       gdk_window_get_pointer (GTK_LAYOUT (widget)->bin_window, &x, &y, NULL);
++      if (event->is_hint)
++              gdk_device_get_state (event->device, GTK_LAYOUT (widget)->bin_window, NULL, NULL) ;
+       /* If there is only a small motion from the origin and simple 
+          doubleclick is active, abort the motion, otherwise clear simple_dblclick flag */
diff --git a/gtkhtml/gtkhtml_170_text_selection_with_proper_doubleclick.diff b/gtkhtml/gtkhtml_170_text_selection_with_proper_doubleclick.diff
new file mode 100644 (file)
index 0000000..9694899
--- /dev/null
@@ -0,0 +1,35 @@
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.new/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.new/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.new/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.new/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-01-22 10:35:40.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-01-22 10:35:40.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-01-22 10:35:40.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-01-22 10:35:40.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-01-22 10:52:26.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-01-22 10:52:26.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-01-22 10:52:26.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-01-22 10:52:26.000000000 +0200
+@@ -1598,6 +1598,11 @@
+       GdkWindow *window = widget->window;
+       HTMLEngine *engine;
+       gint x, y;
++      guint mouse_double_click_threshold = MOUSE_DBLCLK_THRESHOLD ;
++      GtkSettings *gtk_settings = gtk_widget_get_settings (widget) ;
++
++      if (NULL != gtk_settings)
++              g_object_get (G_OBJECT (gtk_settings), "gtk-double-click-distance", &mouse_double_click_threshold, NULL) ;
+       g_return_val_if_fail (widget != NULL, 0);
+       g_return_val_if_fail (GTK_IS_HTML (widget), 0);
+@@ -1619,8 +1624,8 @@
+       if (GTK_HTML (widget)->simple_dblclick) {
+           GtkHTML *html = GTK_HTML (widget);
+           
+-          if (abs(x - html->selection_x1) <= MOUSE_DBLCLK_THRESHOLD && 
+-              abs(y - html->selection_y1) <= MOUSE_DBLCLK_THRESHOLD)
++          if (abs(x - html->selection_x1) <= mouse_double_click_threshold && 
++              abs(y - html->selection_y1) <= mouse_double_click_threshold)
+               return TRUE;
+               
+           html->simple_dblclick = FALSE;
diff --git a/gtkhtml/gtkhtml_180_dont_click_link_when_panning.diff b/gtkhtml/gtkhtml_180_dont_click_link_when_panning.diff
new file mode 100644 (file)
index 0000000..0a7553d
--- /dev/null
@@ -0,0 +1,220 @@
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2008-10-16 12:07:24.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2008-10-16 12:09:36.000000000 +0200
+@@ -1712,10 +1712,11 @@
+       GdkWindow *window = widget->window;
+       HTMLEngine *engine;
+       gint x, y;
+       guint mouse_double_click_threshold = MOUSE_DBLCLK_THRESHOLD ;
+       GtkSettings *gtk_settings = gtk_widget_get_settings (widget) ;
++      GtkHTML *html = NULL ;
+       if (NULL != gtk_settings)
+               g_object_get (G_OBJECT (gtk_settings), "gtk-double-click-distance", &mouse_double_click_threshold, NULL) ;
+       g_return_val_if_fail (widget != NULL, 0);
+@@ -1731,55 +1732,60 @@
+       gdk_window_get_pointer (GTK_LAYOUT (widget)->bin_window, &x, &y, NULL);
+       if (event->is_hint)
+               gdk_device_get_state (event->device, GTK_LAYOUT (widget)->bin_window, NULL, NULL) ;
++      html = GTK_HTML (widget) ;
++
+       /* If there is only a small motion from the origin and simple 
+          doubleclick is active, abort the motion, otherwise clear simple_dblclick flag */
+-      if (GTK_HTML (widget)->simple_dblclick) {
+-          GtkHTML *html = GTK_HTML (widget);
+-          
++      if (html->simple_dblclick) {
+           if (abs(x - html->selection_x1) <= mouse_double_click_threshold && 
+               abs(y - html->selection_y1) <= mouse_double_click_threshold)
+               return TRUE;
+               
+           html->simple_dblclick = FALSE;
+       }
+       
+       if (!mouse_change_pos (widget, window, x, y, event->state))
+               return FALSE;
+-      engine = GTK_HTML (widget)->engine;
+-      if (GTK_HTML (widget)->in_selection_drag && html_engine_get_editable (engine))
++      engine = html->engine;
++      if (html->in_selection_drag && html_engine_get_editable (engine))
+               html_engine_jump_at (engine, x, y);
+       /* (TL 18-Nov-05) Added panning feature */
+-      if (GTK_HTML (widget)->panning) {
++      if (html->panning) {
+               GtkAdjustment *adj;
+               gint dx, dy;
+               gdouble value;
+-              dx = x - GTK_HTML (widget)->lastx;
+-              dy = y - GTK_HTML (widget)->lasty;
++              dx = x - html->lastx;
++              dy = y - html->lasty;
+               /* Vertical panning */
+               adj = gtk_layout_get_vadjustment(GTK_LAYOUT(widget));
+               value = adj->value - (gdouble) dy;
+               if (value < adj->lower)
+                       value = adj->lower;
+               else if (value > (adj->upper - adj->page_size))
+                       value = adj->upper - adj->page_size;
++              if (ABS (html->y_amount_panned) < mouse_double_click_threshold)
++                      html->y_amount_panned += (gint)(value - adj->value) ;
+               gtk_adjustment_set_value(adj, value);
+               /* Horizontal panning */
+               adj = gtk_layout_get_hadjustment(GTK_LAYOUT(widget));
+               value = adj->value - (gdouble) dx;
+               if (value < adj->lower)
+                       value = adj->lower;
+               else if (value > (adj->upper - adj->page_size))
+                       value = adj->upper - adj->page_size;
++              if (ABS (html->x_amount_panned) < mouse_double_click_threshold)
++                      html->x_amount_panned += (gint)(value - adj->value) ;
+               gtk_adjustment_set_value(adj, value);
++
+       }
+       return TRUE;
+ }
+@@ -1830,18 +1836,20 @@
+                   GdkEventButton *event)
+ {
+       GtkHTML *html;
+       GtkWidget *orig_widget = widget;
+       HTMLEngine *engine;
+-      gint value, x, y;
++      gint value, x, y, xWnd, yWnd;
+       /* printf ("button_press_event\n"); */
+       x = event->x;
+       y = event->y;
++      gdk_window_get_pointer (widget->window, &xWnd, &yWnd, NULL) ;
+       widget = shift_to_iframe_parent (widget, &x, &y);
++      shift_to_iframe_parent (orig_widget, &xWnd, &yWnd) ;
+       html   = GTK_HTML (widget);
+       engine = html->engine;
+       if (event->button == 1 || ((event->button == 2 || event->button == 3)
+                                  && html_engine_get_editable (engine)))
+@@ -1897,12 +1905,14 @@
+               case 1:
+                       /*html->in_selection_drag = TRUE;*/
+                       /* (TL 18-Nov-05) First click starts panning, not selection */
+                       html->in_selection_drag = FALSE;
+                       html->panning = TRUE;
+-                      html->lastx = x;
+-                      html->lasty = y;
++                      html->x_amount_panned =
++                      html->y_amount_panned = 0 ;
++                      html->lastx = xWnd + gtk_adjustment_get_value (gtk_layout_get_hadjustment (GTK_LAYOUT (widget)));
++                      html->lasty = yWnd + gtk_adjustment_get_value (gtk_layout_get_vadjustment (GTK_LAYOUT (widget)));
+                       if (html_engine_get_editable (engine)) {
+                               HTMLObject *obj;
+                               obj = html_engine_get_object_at (engine, x, y, NULL, FALSE);
+@@ -1970,10 +1980,12 @@
+                       /*html->in_selection_drag = FALSE;
+                       gtk_html_select_word (html);*/
+                       /* (TL 18-Nov-05) Second click starts selection and stops panning */
+                       html->in_selection_drag = TRUE;
+                       html->panning = FALSE;
++                      html->x_amount_panned =
++                      html->y_amount_panned = 0 ;
+                       html->in_selection = TRUE;
+                       /* Check for simple double click, for selecting a word */
+                       html->simple_dblclick = TRUE;
+                       html->selection_x1 = x;
+                       html->selection_y1 = y;
+@@ -1982,10 +1994,12 @@
+                       /*html->in_selection_drag = FALSE;
+                       gtk_html_select_line (html);*/
+                       /* (TL 18-Nov-05) Third click starts selection and stops panning */
+                       html->in_selection_drag = TRUE;
+                       html->panning = FALSE;
++                      html->x_amount_panned =
++                      html->y_amount_panned = 0 ;
+                       html->in_selection = TRUE;
+               }
+       }
+       return FALSE;
+@@ -2025,10 +2039,16 @@
+               update_primary_selection (html);
+               queue_draw (html);
+       }
+       if (event->button == 1) {
++        guint mouse_double_click_threshold = MOUSE_DBLCLK_THRESHOLD ;
++        GtkSettings *gtk_settings = gtk_widget_get_settings (widget) ;
++
++        if (NULL != gtk_settings)
++                g_object_get (G_OBJECT (gtk_settings), "gtk-double-click-distance", &mouse_double_click_threshold, NULL) ;
++
+               if (html->in_selection_drag && html_engine_get_editable (engine))
+                       html_engine_jump_at (engine, x, y);
+               html->in_selection_drag = FALSE;
+@@ -2056,6 +2056,8 @@
+               html->panning = FALSE;
+               if (!html->priv->dnd_in_progress
++                  && ABS (html->x_amount_panned) < mouse_double_click_threshold
++                  && ABS (html->y_amount_panned) < mouse_double_click_threshold
+                   && html->pointer_url != NULL && ! html->in_selection
+                   && (!gtk_html_get_editable (html) || html->priv->in_url_test_mode)) {
+                       g_signal_emit (widget,  signals[LINK_CLICKED], 0, html->pointer_url);
+@@ -2059,11 +2079,14 @@
+                               focus_object = html_engine_get_object_at (html->engine, x, y, &offset, TRUE);
+                               if (HTML_IS_TEXT (focus_object))
+                                       html_text_set_link_visited (HTML_TEXT (focus_object), (gint) offset, html->engine, TRUE);
+                       }
+               }
+-              
++
++              html->x_amount_panned =
++              html->y_amount_panned = 0 ;
++
+               /* If it was a simple doubleclick select a word */
+               if (html->simple_dblclick) {
+                   html->simple_dblclick = FALSE;
+                   gtk_html_select_word(html);
+               }
+@@ -3399,10 +3422,12 @@
+       html->selection_x1 = 0;
+       html->selection_y1 = 0;
+       /* (TL 18-Nov-05) For panning */
+       html->panning = FALSE;
++      html->x_amount_panned =
++      html->y_amount_panned = 0 ;
+       html->lastx = 0;
+       html->lasty = 0;
+       html->in_selection = FALSE;
+       html->in_selection_drag = FALSE;
+diff -r -U5 gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2008-10-16 12:07:24.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2008-10-16 12:09:41.000000000 +0200
+@@ -58,10 +58,12 @@
+       /* (TL 18-Nov-05) Panning variables */
+       gboolean panning;
+       gint lastx;
+       gint lasty;
++      gint x_amount_panned ;
++      gint y_amount_panned ;
+       guint in_selection : 1;
+       guint in_selection_drag : 1;
+       guint debug : 1;
diff --git a/gtkhtml/gtkhtml_190_proper_adjustment_values.diff b/gtkhtml/gtkhtml_190_proper_adjustment_values.diff
new file mode 100644 (file)
index 0000000..193f06f
--- /dev/null
@@ -0,0 +1,33 @@
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.mod/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.mod/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.mod/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.9.1.mod/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-06 17:08:09.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-06 17:08:09.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-06 17:08:09.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-06 17:08:09.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-06 18:31:54.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-06 18:31:54.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-06 18:31:54.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-02-06 18:31:54.000000000 +0200
+@@ -3941,8 +3941,11 @@
+       /* printf ("calc scrollbars\n"); */
+-      height = html_engine_get_doc_height (html->engine);
+       width = html_engine_get_doc_width (html->engine);
++      height = html_engine_get_doc_height (html->engine);
++
++      width = MAX (width, html->engine->width) ;
++      height = MAX (height, html->engine->height) ;
+       layout = GTK_LAYOUT (html);
+       hadj = layout->hadjustment;
+@@ -3972,7 +3975,6 @@
+               if (changed_x)
+                       *changed_x = TRUE;
+       }
+-
+ }
\f
diff --git a/gtkhtml/gtkhtml_200_textslave_proper_disposal.diff b/gtkhtml/gtkhtml_200_textslave_proper_disposal.diff
new file mode 100644 (file)
index 0000000..4307dca
--- /dev/null
@@ -0,0 +1,24 @@
+diff -ru gtkhtml-3.24.4/gtkhtml/htmltextslave.c gtkhtml-3.24.4/gtkhtml/htmltextslave.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmltextslave.c gtkhtml-3.24.4/gtkhtml/htmltextslave.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmltextslave.c gtkhtml-3.24.4/gtkhtml/htmltextslave.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmltextslave.c gtkhtml-3.24.4/gtkhtml/htmltextslave.c
+--- gtkhtml-3.24.4/gtkhtml/htmltextslave.c     2007-02-16 17:48:00.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmltextslave.c     2007-02-16 17:48:00.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmltextslave.c     2007-02-16 17:48:00.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmltextslave.c     2007-02-16 17:48:00.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmltextslave.c     2007-02-16 17:58:09.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmltextslave.c     2007-02-16 17:58:09.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmltextslave.c     2007-02-16 17:58:09.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmltextslave.c     2007-02-16 17:58:09.000000000 +0200
+@@ -623,9 +623,8 @@
+                                       - (slave->owner->text + tmp_gi1.item->offset);
+                               tmp_gi2 = pango_glyph_item_split (&tmp_gi1, slave->owner->text, split_index);
+-                              glyph_item->glyph_item = *tmp_gi2;
+-                              tmp_gi2->item = NULL;
+-                              tmp_gi2->glyphs = NULL;
++                              glyph_item->glyph_item.item = pango_item_copy (tmp_gi2->item) ;
++                              glyph_item->glyph_item.glyphs = pango_glyph_string_copy (tmp_gi2->glyphs) ;
+                               /* free the tmp1 content and tmp2 container, but not the content */
+                               pango_item_free (tmp_gi1.item);
diff --git a/gtkhtml/gtkhtml_210_try_a11y.diff b/gtkhtml/gtkhtml_210_try_a11y.diff
new file mode 100644 (file)
index 0000000..ee54136
--- /dev/null
@@ -0,0 +1,33 @@
+diff -ru gtkhtml-3.24.4/configure.in gtkhtml-3.24.4/configure.in
+--- gtkhtml-3.24.4/configure.in        2007-04-03 13:43:10.000000000 +0300
++++ gtkhtml-3.24.4/configure.in        2007-04-03 15:20:59.000000000 +0300
+@@ -75,6 +75,29 @@
+              [ --enable-a11y   Enable Accessibility (requires gail) [default=no]],
+              [ac_cv_enable_a11y=$enableval],[ac_cv_enable_a11y=no])
+ AC_MSG_CHECKING([whether to enable a11y])
++echo '**********************************'
++if test -z "$PKG_CONFIG"; then
++       echo "Going to check for pkg-config ..."
++       AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
++       echo "Checked for pkg-config: $PKG_CONFIG"
++fi
++if test "$ac_cv_enable_a11y" = yes; then
++       echo "ac_cv_enable_a11y: Forced off."
++       ac_cv_enable_a11y=no
++       if test "x$PKG_CONFIG" != "xno"; then
++         echo "ac_cv_enable_a11y: Have pkg-config: $PKG_CONFIG"
++         if $PKG_CONFIG --exists gail; then
++           echo "ac_cv_enable_a11y: pkg-config says gail exists"
++           ac_cv_enable_a11y=yes ;
++           echo "ac_cv_enable_a11y: Turned on."
++         else
++           echo "ac_cv_enable_a11y: $PKG_CONFIG --exists gail failed"
++         fi
++       else
++         echo "ac_cv_enable_a11y: Do not have pkg-config: $PKG_CONFIG"
++       fi
++fi
++echo '**********************************'
+ if test "$ac_cv_enable_a11y" = yes; then
+        AC_MSG_RESULT(yes)
+        GAIL_MODULES="gail >= 1.1.0"
diff --git a/gtkhtml/gtkhtml_220_link_visited.diff b/gtkhtml/gtkhtml_220_link_visited.diff
new file mode 100644 (file)
index 0000000..a321ebc
--- /dev/null
@@ -0,0 +1,115 @@
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-05-09 15:04:10.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-05-09 15:04:10.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-05-09 15:04:10.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-05-09 15:04:10.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-05-09 19:27:23.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-05-09 19:27:23.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-05-09 19:27:23.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-05-09 19:27:23.000000000 +0300
+@@ -6015,6 +6015,12 @@
+       html_engine_flush (html->engine);
+ }
++void
++gtk_html_set_link_visited (GtkHTML *html, char *url, gboolean visited)
++  {
++  html_engine_set_link_visited (html->engine, url, visited) ;
++  }
++
+ const char *
+ gtk_html_get_object_id_at (GtkHTML *html, int x, int y)
+ {
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-05-09 15:04:10.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-05-09 15:04:10.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-05-09 15:04:10.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-05-09 15:04:10.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-05-09 19:28:52.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-05-09 19:28:52.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-05-09 19:28:52.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-05-09 19:28:52.000000000 +0300
+@@ -328,6 +328,9 @@
+ char *                     gtk_html_get_cursor_url                (GtkHTML                   *html);
+ void                       gtk_html_set_tokenizer                 (GtkHTML                   *html,
+                                                                  HTMLTokenizer             *tokenizer);
++void                       gtk_html_set_link_visited              (GtkHTML                   *html,
++                   char                      *url,
++                   gboolean                   visited);
+ /* DEPRECATED */
+ #if 1
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-05-09 15:04:10.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-05-09 15:04:10.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-05-09 15:04:10.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-05-09 15:04:10.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-05-09 19:26:17.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-05-09 19:26:17.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-05-09 19:26:17.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-05-09 19:26:17.000000000 +0300
+@@ -6090,6 +6090,36 @@
+               g_hash_table_foreach (t, set_object_data, o);
+ }
++typedef struct
++  {
++  char *url ;
++  gboolean visited ;
++  } SET_LINK_VISITED_PARAMS ;
++
++static void html_engine_set_link_visited_forall_cb (HTMLObject *self, HTMLEngine *engine, SET_LINK_VISITED_PARAMS *params)
++  {
++  if (HTML_IS_TEXT (self))
++    {
++    char *url = NULL ;
++    gint offset = 0 ;
++
++    do
++      if (NULL != (url = html_object_get_complete_url (HTML_OBJECT (self), offset)))
++        {
++        if (!strcmp (params->url, url))
++          html_text_set_link_visited (HTML_TEXT (self), offset, engine, params->visited) ;
++        g_free (url) ;
++        }
++    while (html_text_next_link_offset (HTML_TEXT (self), &offset)) ;
++    }
++  }
++
++void
++html_engine_set_link_visited (HTMLEngine *e, char *url, gboolean visited)
++  {
++  SET_LINK_VISITED_PARAMS params = {url, visited} ;
++  html_object_forall (e->clue, e, (HTMLObjectForallFunc)html_engine_set_link_visited_forall_cb, &params) ;
++  }
+ HTMLEngine *
+ html_engine_get_top_html_engine (HTMLEngine *e)
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.h gtkhtml-3.24.4/gtkhtml/htmlengine.h
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.h gtkhtml-3.24.4/gtkhtml/htmlengine.h
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.h gtkhtml-3.24.4/gtkhtml/htmlengine.h
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.h gtkhtml-3.24.4/gtkhtml/htmlengine.h
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-01-03 17:19:57.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-05-09 19:26:56.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-05-09 19:26:56.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-05-09 19:26:56.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-05-09 19:26:56.000000000 +0300
+@@ -493,5 +493,6 @@
+ void html_engine_opened_streams_set (HTMLEngine *e, int value);
+ void html_engine_refresh_fonts (HTMLEngine *e);
++void html_engine_set_link_visited (HTMLEngine *e, char *url, gboolean visited) ;
+ #endif /* _HTMLENGINE_H_ */
diff --git a/gtkhtml/gtkhtml_230_remove_libart.diff b/gtkhtml/gtkhtml_230_remove_libart.diff
new file mode 100644 (file)
index 0000000..d9f5a8d
--- /dev/null
@@ -0,0 +1,60 @@
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlobject.h gtkhtml-3.24.4/gtkhtml/htmlobject.h
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlobject.h gtkhtml-3.24.4/gtkhtml/htmlobject.h
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlobject.h gtkhtml-3.24.4/gtkhtml/htmlobject.h
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlobject.h gtkhtml-3.24.4/gtkhtml/htmlobject.h
+--- gtkhtml-3.24.4/gtkhtml/htmlobject.h        2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlobject.h        2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlobject.h        2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlobject.h        2007-01-03 17:19:57.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlobject.h        2007-05-30 23:03:10.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlobject.h        2007-05-30 23:03:10.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlobject.h        2007-05-30 23:03:10.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlobject.h        2007-05-30 23:03:10.000000000 +0300
+@@ -24,7 +24,6 @@
+ #ifndef _HTMLOBJECT_H_
+ #define _HTMLOBJECT_H_
+-#include <libart_lgpl/art_rect.h>
+ #include <gtk/gtk.h>
+ #include "htmltypes.h"
+ #include "htmlenums.h"
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c
+--- gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c  2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c  2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c  2007-01-03 17:19:57.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c  2007-01-03 17:19:57.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c  2007-05-30 23:02:58.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c  2007-05-30 23:02:58.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c  2007-05-30 23:02:58.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlplainpainter.c  2007-05-30 23:02:58.000000000 +0300
+@@ -22,7 +22,6 @@
+ #include <config.h>
+ #include <string.h>
+ #include <stdlib.h>
+-#include <libart_lgpl/art_rect.h>
+ #include "htmlentity.h"
+ #include "htmlgdkpainter.h"
+diff -ru gtkhtml-3.24.4/gtkhtml/htmltablecell.c gtkhtml-3.24.4/gtkhtml/htmltablecell.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmltablecell.c gtkhtml-3.24.4/gtkhtml/htmltablecell.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmltablecell.c gtkhtml-3.24.4/gtkhtml/htmltablecell.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmltablecell.c gtkhtml-3.24.4/gtkhtml/htmltablecell.c
+--- gtkhtml-3.24.4/gtkhtml/htmltablecell.c     2007-02-09 21:54:58.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmltablecell.c     2007-02-09 21:54:58.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmltablecell.c     2007-02-09 21:54:58.000000000 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmltablecell.c     2007-02-09 21:54:58.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmltablecell.c     2007-05-30 23:03:26.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmltablecell.c     2007-05-30 23:03:26.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmltablecell.c     2007-05-30 23:03:26.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmltablecell.c     2007-05-30 23:03:26.000000000 +0300
+@@ -23,7 +23,6 @@
+ #include <config.h>
+ #include <glib.h>
+-#include <libart_lgpl/art_rect.h>
+ #include <string.h>
+ #include "htmlcluev.h"
+ #include "htmlengine-edit.h"
diff --git a/gtkhtml/gtkhtml_240_last_search_selected_area.diff b/gtkhtml/gtkhtml_240_last_search_selected_area.diff
new file mode 100644 (file)
index 0000000..30fb1c3
--- /dev/null
@@ -0,0 +1,186 @@
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-06-25 11:09:14.970379010 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-06-25 11:09:14.970379010 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-06-25 11:09:14.970379010 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-06-25 11:09:14.970379010 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-06-25 11:05:48.745596648 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-06-25 11:05:48.745596648 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-06-25 11:05:48.745596648 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2007-06-25 11:05:48.745596648 +0200
+@@ -6099,10 +6099,16 @@
+       g_return_if_fail (GTK_IS_HTML (html));
+       gtk_html_set_magnification (html, 1.0);
+ }
+ void
++gtk_html_get_selection_area (GtkHTML *html, gint *x, gint *y, gint *w, gint *h)
++{
++      html_engine_get_selection_area (html->engine, x, y, w, h);
++}
++
++void 
+ gtk_html_set_allow_frameset (GtkHTML *html, gboolean allow)
+ {
+       g_return_if_fail (GTK_IS_HTML (html));
+       g_return_if_fail (HTML_IS_ENGINE (html->engine));
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-06-25 11:09:14.977378731 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-06-25 11:09:14.977378731 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-06-25 11:09:14.977378731 +0200
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-06-25 11:09:14.977378731 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-06-25 11:05:48.815593858 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-06-25 11:05:48.815593858 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-06-25 11:05:48.815593858 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2007-06-25 11:05:48.815593858 +0200
+@@ -344,9 +344,14 @@
+                                                                  GtkHTMLSaveReceiverFn      receiver,
+                                                                  gpointer                   data);
+ GtkHTMLStream             *gtk_html_begin_content                 (GtkHTML                   *html,
+                                                                  gchar                     *content_type);
+ void                       gtk_html_drag_dest_set                 (GtkHTML                   *html);
++void                   gtk_html_get_selection_area                (GtkHTML                   *html,
++                                                                 gint *x, 
++                                                                 gint *y,
++                                                                 gint *w,
++                                                                 gint *h);
+ #endif
+ #endif /* _GTKHTML_H_ */
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine-search.c gtkhtml-3.24.4/gtkhtml/htmlengine-search.c
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine-search.c gtkhtml-3.24.4/gtkhtml/htmlengine-search.c
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine-search.c gtkhtml-3.24.4/gtkhtml/htmlengine-search.c
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine-search.c gtkhtml-3.24.4/gtkhtml/htmlengine-search.c
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-06-25 11:09:14.444399968 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-06-25 11:09:14.444399968 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-06-25 11:09:14.444399968 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-06-25 11:09:14.444399968 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-06-25 11:05:48.056624103 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-06-25 11:05:48.056624103 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-06-25 11:05:48.056624103 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-06-25 11:05:48.056624103 +0200
+@@ -93,10 +93,15 @@
+       ex += last->width;
+       ey += last->descent;
+       w = ex - x;
+       h = ey - y;
++      e->search_area_x = x;
++      e->search_area_y = y;
++      e->search_area_w = w;
++      e->search_area_h = h;
++
+       /* now calculate gtkhtml adustments */
+       if (x <= ep->x_offset)
+               nx = x;
+       else if (x + w > ep->x_offset + ep->width)
+               nx = x + w - ep->width;
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine-search.h gtkhtml-3.24.4/gtkhtml/htmlengine-search.h
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine-search.h gtkhtml-3.24.4/gtkhtml/htmlengine-search.h
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine-search.h gtkhtml-3.24.4/gtkhtml/htmlengine-search.h
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine-search.h gtkhtml-3.24.4/gtkhtml/htmlengine-search.h
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.h 2007-01-03 16:19:57.000000000 +0100
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.h 2007-01-03 16:19:57.000000000 +0100
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.h 2007-01-03 16:19:57.000000000 +0100
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.h 2007-01-03 16:19:57.000000000 +0100
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.h 2007-06-25 11:05:48.106622111 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.h 2007-06-25 11:05:48.106622111 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.h 2007-06-25 11:05:48.106622111 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.h 2007-06-25 11:05:48.106622111 +0200
+@@ -30,5 +30,9 @@
+                                                gboolean forward);
+ gboolean  html_engine_search_next               (HTMLEngine *e);
+ gboolean  html_engine_search_incremental        (HTMLEngine *e,
+                                                const gchar *text,
+                                                gboolean forward);
++
++void      html_engine_search_get_selected_area  (HTMLEngine *e,
++                                               gint *x, gint *y,
++                                               gint *w, gint *h);
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-06-25 11:09:14.988378293 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-06-25 11:09:14.988378293 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-06-25 11:09:14.988378293 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-06-25 11:09:14.988378293 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-06-25 11:05:47.689638728 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-06-25 11:05:47.689638728 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-06-25 11:05:47.689638728 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2007-06-25 11:05:47.689638728 +0200
+@@ -6584,5 +6584,28 @@
+               html_object_change_set_down (e->clue, HTML_CHANGE_ALL);
+               html_engine_calc_size (e, FALSE);
+               html_engine_schedule_update (e);
+       }
+ }
++
++static void
++add_iframe_off (HTMLEngine *e, gint *x, gint *y)
++{
++      g_assert (e);
++      g_assert (e->widget);
++
++      if (e->widget->iframe_parent) {
++              *x += e->widget->iframe_parent->allocation.x;
++              *y += e->widget->iframe_parent->allocation.y;
++      }
++}
++
++void
++html_engine_get_selection_area (HTMLEngine *e, 
++                              gint *x, gint *y, 
++                              gint *w, gint *h)
++{
++      *x = e->search_area_x;
++      *y = e->search_area_y;
++      *w = e->search_area_w;
++      *h = e->search_area_h;
++}
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine.h gtkhtml-3.24.4/gtkhtml/htmlengine.h
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine.h gtkhtml-3.24.4/gtkhtml/htmlengine.h
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine.h gtkhtml-3.24.4/gtkhtml/htmlengine.h
+diff -r -U 5 gtkhtml-3.24.4/gtkhtml/htmlengine.h gtkhtml-3.24.4/gtkhtml/htmlengine.h
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-06-25 11:09:14.993378094 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-06-25 11:09:14.993378094 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-06-25 11:09:14.993378094 +0200
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-06-25 11:09:14.993378094 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-06-25 11:05:47.727637213 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-06-25 11:05:47.727637213 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-06-25 11:05:47.727637213 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.h        2007-06-25 11:05:47.727637213 +0200
+@@ -265,10 +265,15 @@
+       gboolean expose;
+       gboolean need_update;
+       HTMLObject *parser_clue;  /* the root of the currently parsed block */
++
++      gint search_area_x;
++      gint search_area_y;
++      gint search_area_w;
++      gint search_area_h;
+ };
+ /* must be forward referenced *sigh* */
+ struct _HTMLEmbedded;
+@@ -492,7 +497,10 @@
+ void html_engine_opened_streams_decrement (HTMLEngine *e);
+ void html_engine_opened_streams_set (HTMLEngine *e, int value);
+ void html_engine_refresh_fonts (HTMLEngine *e);
+ void html_engine_set_link_visited (HTMLEngine *e, char *url, gboolean visited) ;
++void html_engine_get_selection_area (HTMLEngine *e, 
++                                   gint *x, gint *y, 
++                                   gint *w, gint *h);
+ #endif /* _HTMLENGINE_H_ */
diff --git a/gtkhtml/gtkhtml_250_back_out_of_regex_search.diff b/gtkhtml/gtkhtml_250_back_out_of_regex_search.diff
new file mode 100644 (file)
index 0000000..2d966d7
--- /dev/null
@@ -0,0 +1,58 @@
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-search.c gtkhtml-3.24.4/gtkhtml/htmlengine-search.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-search.c gtkhtml-3.24.4/gtkhtml/htmlengine-search.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-search.c gtkhtml-3.24.4/gtkhtml/htmlengine-search.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine-search.c gtkhtml-3.24.4/gtkhtml/htmlengine-search.c
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-07-31 14:25:35.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-07-31 14:25:35.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-07-31 14:25:35.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-07-31 14:25:35.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-07-31 14:27:45.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-07-31 14:27:45.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-07-31 14:27:45.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlengine-search.c 2007-07-31 14:27:45.000000000 +0300
+@@ -153,6 +153,9 @@
+       }
+       info = e->search_info = html_search_new (e, text, case_sensitive, forward, regular);
++      if (!info) {
++              return FALSE;
++      }
+       p = e->search_info->stack ? HTML_OBJECT (e->search_info->stack->data)->parent : NULL;
+       o = p ? p : e->clue;
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlsearch.c gtkhtml-3.24.4/gtkhtml/htmlsearch.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlsearch.c gtkhtml-3.24.4/gtkhtml/htmlsearch.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlsearch.c gtkhtml-3.24.4/gtkhtml/htmlsearch.c
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlsearch.c gtkhtml-3.24.4/gtkhtml/htmlsearch.c
+--- gtkhtml-3.24.4/gtkhtml/htmlsearch.c        2007-07-31 14:25:34.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/htmlsearch.c        2007-07-31 14:25:34.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/htmlsearch.c        2007-07-31 14:25:34.000000000 +0300
+--- gtkhtml-3.24.4/gtkhtml/htmlsearch.c        2007-07-31 14:25:34.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlsearch.c        2007-07-31 14:28:24.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlsearch.c        2007-07-31 14:28:24.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlsearch.c        2007-07-31 14:28:24.000000000 +0300
++++ gtkhtml-3.24.4/gtkhtml/htmlsearch.c        2007-07-31 14:28:24.000000000 +0300
+@@ -100,6 +100,11 @@
+               rv = re_compile_pattern (ns->text, ns->text_bytes, ns->reb);
+               if (rv) {
+                       g_warning (rv);
++
++                      g_free(ns->reb);
++                      ns->reb = NULL;
++                      html_search_destroy(ns);
++                      ns = NULL;
+               }
+ #else
+               int rv_int;
+@@ -114,6 +119,11 @@
+                       } else {
+                               g_warning ("regcomp failed, error code %d", rv_int);
+                       }
++
++                      g_free(ns->reb);
++                      ns->reb = NULL;
++                      html_search_destroy(ns);
++                      ns = NULL;
+               }
+ #endif
+       } else {
diff --git a/gtkhtml/gtkhtml_260_dolt_fix.diff b/gtkhtml/gtkhtml_260_dolt_fix.diff
new file mode 100644 (file)
index 0000000..7c67514
--- /dev/null
@@ -0,0 +1,14 @@
+--- gtkhtml-3.24.4/configure.in        2008-11-05 10:21:19.000000000 +0100
++++ gtkhtml-3.24.4/configure.in        2008-11-05 10:28:58.000000000 +0100
+@@ -51,11 +51,10 @@
+ AC_ISC_POSIX
+ AC_PROG_CC
+ AC_STDC_HEADERS
+ AC_LIBTOOL_WIN32_DLL
+ AM_PROG_LIBTOOL
+-DOLT
+ AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
+ dnl Win32
+ AC_MSG_CHECKING([for Win32])
diff --git a/gtkhtml/gtkhtml_270_content_type_fix.diff b/gtkhtml/gtkhtml_270_content_type_fix.diff
new file mode 100644 (file)
index 0000000..a116d18
--- /dev/null
@@ -0,0 +1,12 @@
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4-proper_content_type_handling/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2009-02-20 14:00:56.000000000 +0100
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2009-02-20 14:02:22.000000000 +0100
+@@ -3680,7 +3680,7 @@
+ {
+       g_return_val_if_fail (! gtk_html_get_editable (html), NULL);
+-      return gtk_html_begin_full (html, NULL, NULL, 0);
++      return gtk_html_begin_full (html, NULL, content_type, 0);
+ }
+ /**
diff --git a/gtkhtml/gtkhtml_280_pop_element_by_type_crash_fix.diff b/gtkhtml/gtkhtml_280_pop_element_by_type_crash_fix.diff
new file mode 100644 (file)
index 0000000..4d345d5
--- /dev/null
@@ -0,0 +1,37 @@
+2009-03-20 08:54 diff -lru gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4-fix_crash_dkedves/gtkhtml/htmlengine.c Page 1
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2009-03-20 08:54:09.000000000 +0100
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2009-03-19 21:38:46.000000000 +0100
+@@ -1137,17 +1137,22 @@
+
+       while (l) {
+               gint cd;
+-              elem = l->data;
+-
+-              cd = elem->style->display;
+-              if (cd == display)
+-                      break;
+-              if (cd > maxLevel) {
+-                      if (display != DISPLAY_INLINE
+-                          || cd > DISPLAY_BLOCK)
+-                              return;
+-              }
++        /* We skip invalid items to avoid crash...
++         * Yeah, its only a workaround... FIXME */
++        if (l->data && ((HTMLElement*)l->data)->style) {
++              elem = l->data;
++    
++              cd = elem->style->display;
++                  if (cd == display)
++                      break;
++    
++              if (cd > maxLevel) {
++                          if (display != DISPLAY_INLINE
++                          || cd > DISPLAY_BLOCK)
++                              return;
++              }
++        }
+               l = l->next;
+       }
+
diff --git a/gtkhtml/gtkhtml_290_set_image_max_size.diff b/gtkhtml/gtkhtml_290_set_image_max_size.diff
new file mode 100644 (file)
index 0000000..ece9706
--- /dev/null
@@ -0,0 +1,306 @@
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2009-04-07 04:15:16.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2009-04-07 04:14:25.000000000 +0200
+@@ -6139,6 +6139,12 @@
+       html_engine_get_selection_area (html->engine, x, y, w, h);
+ }
++void
++gtk_html_set_max_image_size (GtkHTML *html, gint width, gint height)
++{
++      html_engine_set_max_image_size (html->engine, width, height);
++}
++
+ void 
+ gtk_html_set_allow_frameset (GtkHTML *html, gboolean allow)
+ {
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.h gtkhtml-3.24.4/gtkhtml/gtkhtml.h
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2009-04-07 04:15:16.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.h   2009-04-07 04:14:25.000000000 +0200
+@@ -366,6 +366,9 @@
+                                                                  gint *w,
+                                                                  gint *h);
++void               gtk_html_set_max_image_size                    (GtkHTML           *html,
++                                                                   gint width, gint height);
++
+ #endif
+ #endif /* _GTKHTML_H_ */
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2009-04-07 04:15:16.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2009-04-07 04:14:25.000000000 +0200
+@@ -4413,6 +4413,7 @@
+       engine->language = NULL;
++  engine->image_max_size_set = FALSE;
+ }
+ HTMLEngine *
+@@ -6966,3 +6967,12 @@
+       *w = e->search_area_w;
+       *h = e->search_area_h;
+ }
++
++void html_engine_set_max_image_size (HTMLEngine *e, 
++                                     gint width,
++                                     gint height)
++{
++  e->image_max_height = height;
++  e->image_max_width = width;
++  e->image_max_size_set = TRUE;
++}
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.h gtkhtml-3.24.4/gtkhtml/htmlengine.h
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.h        2009-04-07 04:15:16.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.h        2009-04-07 04:14:25.000000000 +0200
+@@ -270,6 +270,10 @@
+       gint search_area_y;
+       gint search_area_w;
+       gint search_area_h;
++
++  gboolean image_max_size_set;
++  gint image_max_width;
++  gint image_max_height;
+ };
+ /* must be forward referenced *sigh* */
+@@ -500,5 +504,6 @@
+ void html_engine_get_selection_area (HTMLEngine *e, 
+                                    gint *x, gint *y, 
+                                    gint *w, gint *h);
++void html_engine_set_max_image_size (HTMLEngine *e, gint width, gint height);
+ #endif /* _HTMLENGINE_H_ */
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlimage.c gtkhtml-3.24.4/gtkhtml/htmlimage.c
+--- gtkhtml-3.24.4/gtkhtml/htmlimage.c 2009-04-07 04:15:16.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlimage.c 2009-04-07 04:31:37.000000000 +0200
+@@ -83,8 +83,9 @@
+ html_image_get_actual_width (HTMLImage *image, HTMLPainter *painter)
+ {
+       GdkPixbufAnimation *anim = image->image_ptr->animation;
++  GdkPixbuf *pixbuf = image->image_ptr->pixbuf;
+       gint pixel_size = painter ? html_painter_get_pixel_size (painter) : 1;
+-      gint width;
++      gint width, get_width, get_height;
+       if (image->percent_width) {
+               /* The cast to `gdouble' is to avoid overflow (eg. when
+@@ -93,16 +94,24 @@
+                        * image->specified_width) / 100 * image->magnification;
+       } else if (image->specified_width > 0) {
+               width = image->specified_width * pixel_size * image->magnification;
+-      } else if (image->image_ptr == NULL || anim == NULL) {
++      } else if (image->image_ptr == NULL || 
++             (anim == NULL && pixbuf == NULL)) {
+               width = DEFAULT_SIZE * pixel_size * image->magnification;
+       } else {
+-              width = gdk_pixbuf_animation_get_width (anim) * pixel_size * image->magnification;
++    if (anim) {
++      get_width = gdk_pixbuf_animation_get_width (anim);
++      get_height = gdk_pixbuf_animation_get_height (anim);
++    } else {
++      get_width = gdk_pixbuf_get_width (pixbuf); 
++      get_height = gdk_pixbuf_get_height (pixbuf);
++    }
++              width = get_width * pixel_size * image->magnification;
+               if (image->specified_height > 0 || image->percent_height) {
+                       double scale;
+                       scale =  ((double) html_image_get_actual_height (image, painter))
+-                              / (gdk_pixbuf_animation_get_height (anim) * pixel_size);
++                              / (get_height * pixel_size);
+                       width *= scale;
+               }
+@@ -116,8 +125,9 @@
+ html_image_get_actual_height (HTMLImage *image, HTMLPainter *painter)
+ {
+       GdkPixbufAnimation *anim = image->image_ptr->animation;
++  GdkPixbuf *pixbuf = image->image_ptr->pixbuf;
+       gint pixel_size = painter ? html_painter_get_pixel_size (painter) : 1;
+-      gint height;
++      gint height, get_width, get_height;
+       if (image->percent_height) {
+               /* The cast to `gdouble' is to avoid overflow (eg. when
+@@ -126,16 +136,24 @@
+                         * image->specified_height) / 100 * image->magnification;
+       } else if (image->specified_height > 0) {
+               height = image->specified_height * pixel_size * image->magnification;
+-      } else if (image->image_ptr == NULL || anim == NULL) {
++      } else if (image->image_ptr == NULL || 
++             (anim == NULL && pixbuf == NULL)) {
+               height = DEFAULT_SIZE * pixel_size * image->magnification;
+       } else {
+-              height = gdk_pixbuf_animation_get_height (anim) * pixel_size * image->magnification;
++    if (anim) {
++      get_width = gdk_pixbuf_animation_get_width (anim);
++      get_height = gdk_pixbuf_animation_get_height (anim);
++    } else {
++      get_width = gdk_pixbuf_get_width (pixbuf); 
++      get_height = gdk_pixbuf_get_height (pixbuf);
++    }
++              height = get_height * pixel_size * image->magnification;
+               if (image->specified_width > 0 || image->percent_width) {
+                       double scale;
+                       scale = ((double) html_image_get_actual_width (image, painter))
+-                              / (gdk_pixbuf_animation_get_width (anim) * pixel_size);
++                              / (get_width * pixel_size);
+                       height *= scale;
+               }
+@@ -454,7 +472,7 @@
+                       pixbuf = gdk_pixbuf_animation_get_static_image (ip->animation);
+               }
+       } else {
+-              pixbuf = NULL;
++    pixbuf = ip->pixbuf;
+       }
+       pixel_size = html_painter_get_pixel_size (painter);
+@@ -1121,11 +1139,16 @@
+       gdk_pixbuf_loader_close (ip->loader, NULL);
+-      if (!ip->animation) {
+-              ip->animation = gdk_pixbuf_loader_get_animation (ip->loader);
++      if (ip->rescaled && !ip->pixbuf) {
++    ip->pixbuf = gdk_pixbuf_loader_get_pixbuf (ip->loader);
+-              if (ip->animation)
+-                      g_object_ref (ip->animation);
++    if (ip->pixbuf)
++      g_object_ref (ip->pixbuf);
++  } else if (!ip->rescaled && !ip->animation) {
++    ip->animation = gdk_pixbuf_loader_get_animation (ip->loader);
++
++    if (ip->animation)
++          g_object_ref (ip->animation);
+       }
+       html_image_pointer_start_animation (ip);
+@@ -1231,15 +1254,49 @@
+ static void
+ html_image_factory_area_prepared (GdkPixbufLoader *loader, HTMLImagePointer *ip)
+ {
+-      if (!ip->animation) {
+-              ip->animation = gdk_pixbuf_loader_get_animation (loader);
++  if (ip->rescaled && !ip->pixbuf) {
++    ip->pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
++    g_object_ref (ip->pixbuf);
++      } else if (!ip->rescaled && !ip->animation) {
++    ip->animation = gdk_pixbuf_loader_get_animation (loader);
+               g_object_ref (ip->animation);
+-              html_image_pointer_start_animation (ip);
++    html_image_pointer_start_animation (ip);
+       }
+       update_or_redraw (ip);
+ }
++static void
++html_image_factory_size_prepared (GdkPixbufLoader *loader,
++                                  gint width,
++                                  gint height,
++                                  HTMLImagePointer *ip)
++{
++  HTMLEngine* e = ip->factory->engine;
++  gint new_width = width;
++  gint new_height = height;
++
++  if (!e->image_max_size_set)
++    return;
++
++  if (new_width > e->image_max_width) {
++    new_height = (gint) ((double) new_height * 
++                 ((double) e->image_max_width / (double) new_width));
++    new_width = e->image_max_width;
++  }
++
++  if (new_height > e->image_max_height) {
++    new_width = (gint) ((double) new_width * 
++                ((double) e->image_max_height / (double) new_height));
++    new_height = e->image_max_height;
++  }
++
++  if ((width != new_width) || (height != new_height)) {
++    ip->rescaled = TRUE;
++    gdk_pixbuf_loader_set_size (loader, new_width, new_height);
++  }
++}
++
+ static GdkPixbuf *
+ html_image_factory_get_missing (HTMLImageFactory *factory)
+ {
+@@ -1321,6 +1378,8 @@
+       retval->iter = NULL;
+       retval->animation = NULL;
+       retval->interests = NULL;
++  retval->pixbuf = NULL;
++  retval->rescaled = FALSE;
+       retval->factory = factory;
+       retval->stall = FALSE;
+       retval->stall_timeout = g_timeout_add (STALL_INTERVAL,
+@@ -1379,6 +1438,10 @@
+               g_object_unref (ip->animation);
+               ip->animation = NULL;
+       }
++      if (ip->pixbuf) {
++              g_object_unref (ip->pixbuf);
++              ip->pixbuf = NULL;
++      }
+       if (ip->iter) {
+               g_object_unref (ip->iter);
+               ip->iter = NULL;
+@@ -1441,21 +1504,28 @@
+       if (!ip) {
+               ip = html_image_pointer_new (url, factory);
++    g_signal_connect (ip->loader, "size_prepared",
++                      G_CALLBACK (html_image_factory_size_prepared),
++                      ip);
+               g_hash_table_insert (factory->loaded_images, ip->url, ip);
+               if (*url) {
+-                      g_signal_connect (G_OBJECT (ip->loader), "area_prepared",
+-                                        G_CALLBACK (html_image_factory_area_prepared),
+-                                        ip);
+-
+-                      g_signal_connect (G_OBJECT (ip->loader), "area_updated",
+-                                        G_CALLBACK (html_image_factory_area_updated),
+-                                        ip);
++                      g_signal_connect (G_OBJECT (ip->loader), "area_prepared",
++                                  G_CALLBACK (html_image_factory_area_prepared),
++                                ip);
++
++                g_signal_connect (G_OBJECT (ip->loader), "area_updated",
++                                G_CALLBACK (html_image_factory_area_updated),
++                                ip);
+                       stream = html_image_pointer_load (ip);
+               }
+       } else {
+               if (reload) {
+                       free_image_ptr_data (ip);
+                       ip->loader = gdk_pixbuf_loader_new ();
++      g_signal_connect (ip->loader, "size_prepared",
++                        G_CALLBACK (html_image_factory_size_prepared),
++                        ip);
++
+                       stream = html_image_pointer_load (ip);
+               }
+       }
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlimage.h gtkhtml-3.24.4/gtkhtml/htmlimage.h
+--- gtkhtml-3.24.4/gtkhtml/htmlimage.h 2009-04-07 04:15:16.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlimage.h 2009-04-07 04:23:46.000000000 +0200
+@@ -41,6 +41,8 @@
+       gint stall;
+       guint stall_timeout;
+       guint animation_timeout;
++  GdkPixbuf *pixbuf; /* Only used when image_max_size_set & image rescaled */
++  gboolean rescaled; /* to know image was rescaled */
+ };
+ #define HTML_IMAGE(x) ((HTMLImage *)(x))
diff --git a/gtkhtml/gtkhtml_300_coverity_findings.diff b/gtkhtml/gtkhtml_300_coverity_findings.diff
new file mode 100644 (file)
index 0000000..929cb68
--- /dev/null
@@ -0,0 +1,78 @@
+diff -ru gtkhtml-3.24.4/gtkhtml/gtkhtml.c gtkhtml-3.24.4/gtkhtml/gtkhtml.c
+--- gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2009-04-09 10:13:35.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/gtkhtml.c   2009-04-09 11:28:49.000000000 +0200
+@@ -960,14 +960,14 @@
+ {
+       HTMLEngine *engine = GTK_HTML (widget)->engine;
++  if (!engine)
++    return;
++
+       /* we don't need to set font's in idle time so call idle callback directly to avoid
+          recalculating whole document
+       */
+-      if (engine) {
+-              gtk_html_set_fonts (GTK_HTML (widget), engine->painter);
+-              html_engine_refresh_fonts (engine);
+-      }
+-
++      gtk_html_set_fonts (GTK_HTML (widget), engine->painter);
++      html_engine_refresh_fonts (engine);
+       html_colorset_set_style (engine->defaultSettings->color_set, widget);
+       html_colorset_set_unchanged (engine->settings->color_set,
+@@ -2555,6 +2555,7 @@
+                                               g_return_if_fail (link);
+                                               text = g_strndup (HTML_TEXT (obj)->text + link->start_index, link->end_index - link->start_index);
+                                               utf8 = g_strconcat (complete_url, "\n", text, NULL);
++            g_free (text);
+                                       } else
+                                               utf8 = g_strconcat (complete_url, "\n", complete_url, NULL);
+@@ -2562,7 +2563,6 @@
+                                       gtk_selection_data_set (selection_data, selection_data->target, 8,
+                                                               (guchar *) utf16, written_len);
+                                       g_free (utf8);
+-                                      g_free (complete_url);
+                                       GTK_HTML (widget)->priv->dnd_url = utf16;
+                               } else {
+                                       gtk_selection_data_set (selection_data, selection_data->target, 8,
+@@ -2570,6 +2570,8 @@
+                                       /* printf ("complete URL %s\n", complete_url); */
+                                       GTK_HTML (widget)->priv->dnd_url = complete_url;
+                               }
++
++                              g_free (complete_url);
+                       }
+               }
+       }
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlcheckbox.c gtkhtml-3.24.4/gtkhtml/htmlcheckbox.c
+--- gtkhtml-3.24.4/gtkhtml/htmlcheckbox.c      2008-10-13 10:31:38.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlcheckbox.c      2009-04-09 10:50:17.000000000 +0200
+@@ -110,11 +110,12 @@
+ {
+       HTMLEmbedded *element;
+       GtkWidget  *check;
++  static char *on = "on";
+       element = HTML_EMBEDDED (checkbox);
+       if (value == NULL)
+-              value = g_strdup ("on");
++              value = on; 
+       html_embedded_init (element, HTML_EMBEDDED_CLASS (klass), parent, name, value);
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlclueflow.c gtkhtml-3.24.4/gtkhtml/htmlclueflow.c
+--- gtkhtml-3.24.4/gtkhtml/htmlclueflow.c      2008-10-13 10:31:38.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlclueflow.c      2009-04-09 11:27:05.000000000 +0200
+@@ -2308,7 +2308,8 @@
+                                       p += (info->forward) ? 1 : -1;
+                                       } */
+-                              while ((info->forward && index < text_bytes)
++        /* index should be lesser than text_bytes - 1 */
++                              while ((info->forward && index < (text_bytes - 1))
+                                      || (!info->forward && index >= 0)) {
+                                       rv = regexec (info->reb,
+                                                     (gchar *) par + index,
diff --git a/gtkhtml/gtkhtml_310_some_workarounds_to_avoid_crash.diff b/gtkhtml/gtkhtml_310_some_workarounds_to_avoid_crash.diff
new file mode 100644 (file)
index 0000000..659a051
--- /dev/null
@@ -0,0 +1,36 @@
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlengine.c gtkhtml-3.24.4/gtkhtml/htmlengine.c
+--- gtkhtml-3.24.4/gtkhtml/htmlengine.c        2009-04-09 13:15:13.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlengine.c        2009-04-09 13:24:57.000000000 +0200
+@@ -795,13 +795,15 @@
+ static void
+ finish_flow (HTMLEngine *e, HTMLObject *clue) {
+       g_return_if_fail (HTML_IS_ENGINE (e));
+-
++  
+       if (e->flow && HTML_CLUE (e->flow)->tail == NULL) {
+-              html_clue_remove (HTML_CLUE (clue), e->flow);
++    if (clue)
++      html_clue_remove (HTML_CLUE (clue), e->flow);
+               html_object_destroy (e->flow);
+               e->flow = NULL;
+       }
+-      close_flow (e, clue);
++  if (clue)
++   close_flow (e, clue);
+ }
+diff -ru gtkhtml-3.24.4/gtkhtml/htmlobject.c gtkhtml-3.24.4/gtkhtml/htmlobject.c
+--- gtkhtml-3.24.4/gtkhtml/htmlobject.c        2008-10-13 10:31:38.000000000 +0200
++++ gtkhtml-3.24.4/gtkhtml/htmlobject.c        2009-04-09 13:26:02.000000000 +0200
+@@ -57,7 +57,9 @@
+ static void
+ destroy (HTMLObject *self)
+ {
+-#define GTKHTML_MEM_DEBUG 1
++  if (!self)
++    return;
++/* #define GTKHTML_MEM_DEBUG 1 */
+ #if GTKHTML_MEM_DEBUG
+       self->parent = HTML_OBJECT (0xdeadbeef);
+       self->next = HTML_OBJECT (0xdeadbeef);
diff --git a/gtkhtml3.14_3.24.4.bb b/gtkhtml3.14_3.24.4.bb
new file mode 100644 (file)
index 0000000..561ad45
--- /dev/null
@@ -0,0 +1,54 @@
+# Copyright (C) 2009 Kirtika Ruchandani <kirtibr@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "HTML rendering library"
+HOMEPAGE = "unknown"
+LICENSE = "GPL"
+SECTION = "x11/libs"
+DEPENDS = "gtk+ gail"
+PR = "r0"
+
+SRC_URI =  "http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/3.24/gtkhtml-3.24.4.tar.gz \
+           file://gtkhtml/gtkhtml_050_check_string.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_090_dependency_removal.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_100_dependency_removal_cleaning.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_110_panning.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_120_text_selection.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_140_const_patch.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_150_image_magnification.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_160_get_motion_hints.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_170_text_selection_with_proper_doubleclick.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_180_dont_click_link_when_panning.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_190_proper_adjustment_values.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_200_textslave_proper_disposal.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_210_try_a11y.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_220_link_visited.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_230_remove_libart.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_240_last_search_selected_area.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_250_back_out_of_regex_search.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_260_dolt_fix.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_270_content_type_fix.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_280_pop_element_by_type_crash_fix.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_290_set_image_max_size.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_300_coverity_findings.diff;patch=p1 \
+           file://gtkhtml/gtkhtml_310_some_workarounds_to_avoid_crash.diff;patch=p1  "
+
+S="${WORKDIR}/gtkhtml-${PV}"
+
+inherit autotools pkgconfig
+EXTRA_OECONF = "--disable-gtk-doc"
+       
+ORBIT_IDL = "${STAGING_BINDIR_NATIVE}/orbit-idl-2"
+
+do_configure_append(){
+    find ${S} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
+    find ${S} -name Makefile | xargs sed -i s:'-I${prefix}/include':'-I.':g
+    find ${S} -name Makefile | xargs sed -i 's|ORBIT_IDL =.*|ORBIT_IDL = ${ORBIT_IDL}|'
+}
+
+
+do_stage(){
+    autotools_stage_all
+}
+
+FILES_${PN} += "${datadir}/gtkhtml-3.14/*"
diff --git a/libhildonhelp_2.0.5.bb b/libhildonhelp_2.0.5.bb
new file mode 100644 (file)
index 0000000..7cb94ea
--- /dev/null
@@ -0,0 +1,22 @@
+# Copyright (C) 2009 Kirtika Ruchandani <kirtibr@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "Hildon HelpLib for application developers"
+HOMEPAGE = "http://maemo.org"
+LICENSE = "GNU Lesser General Public License-version 2.1"
+SECTION = "misc"
+DEPENDS = "gtk-2.0 libosso libhildon1 gtkhtml libxml2"
+PR = "r0"
+
+SRC_URI = "http://ftp.debian.org/pool/main/libh/${PN}/${PN}_${PV}.orig.tar.gz \
+           file://libhildonhelp/plus-sign.patch;patch=1;pnum=0  "
+
+inherit autotools pkgconfig
+
+do_configure_prepend(){
+    touch gtk-doc.make
+}    
+
+do_stage(){
+    autotools_stage_all
+}
diff --git a/maemopad_2.4.bb b/maemopad_2.4.bb
new file mode 100644 (file)
index 0000000..046414a
--- /dev/null
@@ -0,0 +1,18 @@
+# Copyright (C) 2009 Kirtika Ruchandani <kirtibr@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "Text editor application for editing plain-text documents."
+HOMEPAGE = "http://maemo.org"
+LICENSE = "unknown"
+SECTION = "apps"
+DEPENDS = "libhildon1 gtk-2.0 osso-gnome-vfs2 glib-2.0 dbus-glib libosso conbtdialogs libhildonhelp libhildonfm2 osso-af-settings"
+# This is imp. Only r3 (rev. in pre-alpha repo) works. Later ones dont build
+PR = "r3"
+
+SRC_URI = "http://repository.maemo.org/pool/maemo5.0prealpha1/free/m/${PN}/${PN}_${PV}-3.tar.gz"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${datadir}/icons/*  \
+                ${datadir}/hildon-help/* \
+                ${datadir}/dbus-1/* "