[evolution-patches] gtkhtml: shift tab - correct fix, removed workaround



Attached patch reverts my shift tab workaround and provides correct fix.
It removes binding of ISO_Left_Tab as Shift Tab is mapped to it in
XFree86 keymap.

Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/gtkhtml/src/ChangeLog,v
retrieving revision 1.1795
diff -u -p -r1.1795 ChangeLog
--- ChangeLog	15 May 2003 20:26:35 -0000	1.1795
+++ ChangeLog	16 May 2003 11:13:26 -0000
@@ -1,3 +1,10 @@
+2003-05-16  Radek Doulik  <rodo ximian com>
+
+	* gtkhtml.c (add_bindings): as below
+
+	* keybindingsrc.emacs: don't use ISO_Left_Tab, Shift Tab is mapped
+	to it
+
 2003-05-13  Larry Ewing  <lewing ximian com>
 
 	* htmlfontmanager.c (html_font_manager_set_default): clear both
Index: gtkhtml.c
===================================================================
RCS file: /cvs/gnome/gtkhtml/src/gtkhtml.c,v
retrieving revision 1.510
diff -u -p -r1.510 gtkhtml.c
--- gtkhtml.c	12 May 2003 20:49:26 -0000	1.510
+++ gtkhtml.c	16 May 2003 11:13:27 -0000
@@ -817,7 +817,7 @@ key_press_event (GtkWidget *widget, GdkE
 	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 && !(event->state == GDK_SHIFT_MASK && (event->keyval == GDK_Tab || event->keyval == GDK_ISO_Left_Tab)))
+	if (!html->binding_handled)
 		GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, event);
 	
 	retval = html->binding_handled;
@@ -4601,13 +4601,9 @@ add_bindings (GtkHTMLClass *klass)
 
 	/* tabs */
 	BCOM (0, Tab, INSERT_TAB_OR_NEXT_CELL);
-	BCOM (0, ISO_Left_Tab, INSERT_TAB_OR_NEXT_CELL);
 	BCOM (GDK_CONTROL_MASK, Tab, INDENT_INC);
-	BCOM (GDK_CONTROL_MASK, ISO_Left_Tab, INDENT_INC);
 	BCOM (GDK_CONTROL_MASK | GDK_SHIFT_MASK, Tab, INDENT_DEC);
-	BCOM (GDK_CONTROL_MASK | GDK_SHIFT_MASK, ISO_Left_Tab, INDENT_DEC);
 	BCOM (GDK_SHIFT_MASK, Tab, PREV_CELL);
-	BCOM (GDK_SHIFT_MASK, ISO_Left_Tab, PREV_CELL);
 
 	/* spell checking */
 	BCOM (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK, s, SPELL_SUGGEST);
Index: htmlengine-edit-cut-and-paste.c
===================================================================
RCS file: /cvs/gnome/gtkhtml/src/htmlengine-edit-cut-and-paste.c,v
retrieving revision 1.92
diff -u -p -r1.92 htmlengine-edit-cut-and-paste.c
--- htmlengine-edit-cut-and-paste.c	7 Apr 2003 06:38:05 -0000	1.92
+++ htmlengine-edit-cut-and-paste.c	16 May 2003 11:13:28 -0000
@@ -42,6 +42,7 @@
 #include "htmlengine-edit-fontstyle.h"
 #include "htmlengine-edit-movement.h"
 #include "htmlengine-edit-selection-updater.h"
+#include "htmlframe.h"
 #include "htmlimage.h"
 #include "htmlinterval.h"
 #include "htmllinktext.h"
@@ -1081,10 +1082,28 @@ insert_object_for_undo (HTMLEngine *e, H
 }
 
 static void
+set_frame_parent (HTMLObject *o, HTMLEngine *e, gpointer data)
+{
+	if (html_object_is_frame (o)) {
+		printf ("%d: %p %p\n", html_object_is_frame (o), e, data);
+		printf ("setting frame parent\n");
+	        GTK_HTML (HTML_FRAME (o)->html)->iframe_parent = GTK_WIDGET (HTML_ENGINE (data)->widget);
+		HTML_EMBEDDED (o)->parent = GTK_WIDGET (HTML_ENGINE (data)->widget);
+	}
+}
+
+static void
+set_frames_parent (HTMLEngine *e, HTMLObject *o)
+{
+	html_object_forall (o, e, set_frame_parent, e);
+}
+
+static void
 insert_object (HTMLEngine *e, HTMLObject *obj, guint len, guint position_after, gint level,
 	       HTMLUndoDirection dir, gboolean check)
 {
 	fix_aligned_position (e, &position_after, dir);
+	set_frames_parent (e, obj);
 	insert_object_for_undo (e, obj, len, position_after, level, dir, check);
 }
 
Index: keybindingsrc.emacs
===================================================================
RCS file: /cvs/gnome/gtkhtml/src/keybindingsrc.emacs,v
retrieving revision 1.43
diff -u -p -r1.43 keybindingsrc.emacs
--- keybindingsrc.emacs	8 Apr 2003 14:14:31 -0000	1.43
+++ keybindingsrc.emacs	16 May 2003 11:13:28 -0000
@@ -69,13 +69,9 @@ binding "gtkhtml-bindings-emacs"
   bind "<Ctrl><Alt>r"         { "command" (align-right) }
 
   bind "Tab"                  { "command" (insert-tab-or-next-cell) }
-  bind "ISO_Left_Tab"         { "command" (insert-tab-or-next-cell) }
   bind "<Ctrl>Tab"            { "command" (indent-more) }
-  bind "<Ctrl>ISO_Left_Tab"   { "command" (indent-more) }
   bind "<Ctrl><Shift>Tab"            { "command" (indent-less) }
-  bind "<Ctrl><Shift>ISO_Left_Tab"   { "command" (indent-less) }
   bind "<Shift>Tab"           { "command" (indent-less-or-prev-cell) }
-  bind "<Shift>ISO_Left_Tab"  { "command" (indent-less-or-prev-cell) }
 
   bind "<Alt>1"              { "command" (size-minus-2) }
   bind "<Alt>2"              { "command" (size-minus-1) }


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