gtkhtml r8792 - trunk/gtkhtml



Author: mcrha
Date: Thu Mar 27 10:31:16 2008
New Revision: 8792
URL: http://svn.gnome.org/viewvc/gtkhtml?rev=8792&view=rev

Log:
2008-03-27  Milan Crha  <mcrha redhat com>

	** Fix for bug #339093

	* gtkhtml-private.h: (struct _GtkHTMLPrivate):
	* gtkhtml.c: (key_press_event), (gtk_html_init), (command):
	Skip ZOOM commands only when in non-editing mode and when not
	invoked by key bindings.



Modified:
   trunk/gtkhtml/ChangeLog
   trunk/gtkhtml/gtkhtml-private.h
   trunk/gtkhtml/gtkhtml.c

Modified: trunk/gtkhtml/gtkhtml-private.h
==============================================================================
--- trunk/gtkhtml/gtkhtml-private.h	(original)
+++ trunk/gtkhtml/gtkhtml-private.h	Thu Mar 27 10:31:16 2008
@@ -76,6 +76,8 @@
 	HTMLObject *resize_object;
 
 	gboolean in_url_test_mode;
+
+	gboolean in_key_binding;
 };
 
 void  gtk_html_private_calc_scrollbars  (GtkHTML                *html,

Modified: trunk/gtkhtml/gtkhtml.c
==============================================================================
--- trunk/gtkhtml/gtkhtml.c	(original)
+++ trunk/gtkhtml/gtkhtml.c	Thu Mar 27 10:31:16 2008
@@ -1033,8 +1033,11 @@
 	if (html_class->use_emacs_bindings && html_class->emacs_bindings && !html->binding_handled)
 		gtk_binding_set_activate (html_class->emacs_bindings, event->keyval, event->state, GTK_OBJECT (widget));
 
-	if (!html->binding_handled)
+	if (!html->binding_handled) {
+		html->priv->in_key_binding = TRUE;
 		retval = GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, event);
+		html->priv->in_key_binding = FALSE;
+	}
 
 	retval = retval || html->binding_handled;
 	update = html->priv->update_styles;
@@ -3300,6 +3303,7 @@
 	html->priv->in_object_resize = FALSE;
 	html->priv->resize_cursor = gdk_cursor_new (GDK_BOTTOM_RIGHT_CORNER);
 	html->priv->in_url_test_mode = FALSE;
+	html->priv->in_key_binding = FALSE;
 
 	/* IM Context */
 	html->priv->im_context = gtk_im_multicontext_new ();
@@ -4829,15 +4833,25 @@
 	/* printf ("command %d %s\n", com_type, get_value_nick (com_type)); */
 	html->binding_handled = TRUE;
 
+	#define ensure_key_binding_not_editable() \
+		if (html->priv->in_key_binding && html_engine_get_editable (e)) { \
+			html->binding_handled = FALSE; \
+			rv = FALSE; \
+			break; \
+		}
+
 	/* non-editable + editable commands */
 	switch (com_type) {
 	case GTK_HTML_COMMAND_ZOOM_IN:
+		ensure_key_binding_not_editable ();
 		gtk_html_zoom_in (html);
 		break;
 	case GTK_HTML_COMMAND_ZOOM_OUT:
+		ensure_key_binding_not_editable ();
 		gtk_html_zoom_out (html);
 		break;
 	case GTK_HTML_COMMAND_ZOOM_RESET:
+		ensure_key_binding_not_editable ();
 		gtk_html_zoom_reset (html);
 		break;
 	case GTK_HTML_COMMAND_SEARCH_INCREMENTAL_FORWARD:
@@ -4913,6 +4927,8 @@
 		html->binding_handled = FALSE;
 	}
 
+	#undef ensure_key_binding_not_editable
+
 	if (!html_engine_get_editable (e) || html->binding_handled)
 		return rv;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]