From 5cc8fbf8fe7ac9f855bcb3b03eecbe1926ba441d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 3 Apr 2006 04:41:05 +0000 Subject: [PATCH] Avoid relocations. 2006-04-03 Matthias Clasen * gtk/gtktext.c (gtk_text_key_press): Avoid relocations. --- ChangeLog | 2 + ChangeLog.pre-2-10 | 2 + gtk/gtktext.c | 131 +++++++++++++++++++++------------------------ 3 files changed, 65 insertions(+), 70 deletions(-) diff --git a/ChangeLog b/ChangeLog index b064fdafea..2b199ff9b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2006-04-03 Matthias Clasen + * gtk/gtktext.c (gtk_text_key_press): Avoid relocations. + * gtk/gtkrc.c (gtk_rc_add_initial_default_files) (gtk_rc_add_default_file): Allocate the gtk_rc_default_files array dynamically. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index b064fdafea..2b199ff9b4 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,7 @@ 2006-04-03 Matthias Clasen + * gtk/gtktext.c (gtk_text_key_press): Avoid relocations. + * gtk/gtkrc.c (gtk_rc_add_initial_default_files) (gtk_rc_add_default_file): Allocate the gtk_rc_default_files array dynamically. diff --git a/gtk/gtktext.c b/gtk/gtktext.c index 03f339f706..900601746b 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -444,68 +444,6 @@ static void gtk_text_show_props (GtkText* test, static GtkWidgetClass *parent_class = NULL; - -static const GtkTextFunction control_keys[26] = -{ - (GtkTextFunction)gtk_text_move_beginning_of_line, /* a */ - (GtkTextFunction)gtk_text_move_backward_character, /* b */ - (GtkTextFunction)gtk_editable_copy_clipboard, /* c */ - (GtkTextFunction)gtk_text_delete_forward_character, /* d */ - (GtkTextFunction)gtk_text_move_end_of_line, /* e */ - (GtkTextFunction)gtk_text_move_forward_character, /* f */ - NULL, /* g */ - (GtkTextFunction)gtk_text_delete_backward_character, /* h */ - NULL, /* i */ - NULL, /* j */ - (GtkTextFunction)gtk_text_delete_to_line_end, /* k */ - NULL, /* l */ - NULL, /* m */ - (GtkTextFunction)gtk_text_move_next_line, /* n */ - NULL, /* o */ - (GtkTextFunction)gtk_text_move_previous_line, /* p */ - NULL, /* q */ - NULL, /* r */ - NULL, /* s */ - NULL, /* t */ - (GtkTextFunction)gtk_text_delete_line, /* u */ - (GtkTextFunction)gtk_editable_paste_clipboard, /* v */ - (GtkTextFunction)gtk_text_delete_backward_word, /* w */ - (GtkTextFunction)gtk_editable_cut_clipboard, /* x */ - NULL, /* y */ - NULL, /* z */ -}; - -static const GtkTextFunction alt_keys[26] = -{ - NULL, /* a */ - (GtkTextFunction)gtk_text_move_backward_word, /* b */ - NULL, /* c */ - (GtkTextFunction)gtk_text_delete_forward_word, /* d */ - NULL, /* e */ - (GtkTextFunction)gtk_text_move_forward_word, /* f */ - NULL, /* g */ - NULL, /* h */ - NULL, /* i */ - NULL, /* j */ - NULL, /* k */ - NULL, /* l */ - NULL, /* m */ - NULL, /* n */ - NULL, /* o */ - NULL, /* p */ - NULL, /* q */ - NULL, /* r */ - NULL, /* s */ - NULL, /* t */ - NULL, /* u */ - NULL, /* v */ - NULL, /* w */ - NULL, /* x */ - NULL, /* y */ - NULL, /* z */ -}; - - /**********************************************************************/ /* Widget Crap */ /**********************************************************************/ @@ -2116,26 +2054,79 @@ gtk_text_key_press (GtkWidget *widget, if (event->state & GDK_CONTROL_MASK) { + return_val = TRUE; if ((key >= 'A') && (key <= 'Z')) key -= 'A' - 'a'; - - if ((key >= 'a') && (key <= 'z') && control_keys[(int) (key - 'a')]) + + switch (key) { - (* control_keys[(int) (key - 'a')]) (old_editable, event->time); - return_val = TRUE; + case 'a': + gtk_text_move_beginning_of_line (text); + break; + case 'b': + gtk_text_move_backward_character (text); + break; + case 'c': + gtk_editable_copy_clipboard (text); + break; + case 'd': + gtk_text_delete_forward_character (text); + break; + case 'e': + gtk_text_move_end_of_line (text); + break; + case 'f': + gtk_text_move_forward_character (text); + break; + case 'h': + gtk_text_delete_backward_character (text); + break; + case 'k': + gtk_text_delete_to_line_end (text); + break; + case 'n': + gtk_text_move_next_line (text); + break; + case 'p': + gtk_text_move_previous_line (text); + break; + case 'u': + gtk_text_delete_line (text); + break; + case 'v': + gtk_editable_paste_clipboard (text); + break; + case 'w': + gtk_text_delete_backward_word (text); + break; + case 'x': + gtk_editable_cut_clipboard (text); + break; + default: + return_val = FALSE; } - + break; } else if (event->state & GDK_MOD1_MASK) { + return_val = TRUE; if ((key >= 'A') && (key <= 'Z')) key -= 'A' - 'a'; - if ((key >= 'a') && (key <= 'z') && alt_keys[(int) (key - 'a')]) + switch (key) { - (* alt_keys[(int) (key - 'a')]) (old_editable, event->time); - return_val = TRUE; + case 'b': + gtk_text_move_backward_word (text); + break; + case 'd': + gtk_text_delete_forward_word (text); + break; + case 'f': + gtk_text_move_forward_word (text); + break; + default: + return_val = FALSE; } break;