- {
- extend_selection = FALSE;
-
- if (event->length == 1)
- {
- gtk_editable_delete_selection (editable);
- position = text->point.index;
- gtk_editable_insert_text (editable, &(event->string[0]), 1, &position);
- }
-
- return_val = TRUE;
- }
- else
- return_val = FALSE;
- }
-
- if (return_val && (editable->current_pos != initial_pos))
- {
- if (extend_selection)
- {
- if (editable->current_pos < editable->selection_start_pos)
- gtk_text_set_selection (editable, editable->current_pos,
- editable->selection_end_pos);
- else if (editable->current_pos > editable->selection_end_pos)
- gtk_text_set_selection (editable, editable->selection_start_pos,
- editable->current_pos);
- else
- {
- if (extend_start)
- gtk_text_set_selection (editable, editable->current_pos,
- editable->selection_end_pos);
- else
- gtk_text_set_selection (editable, editable->selection_start_pos,
- editable->current_pos);
- }
- }
- else
- gtk_text_set_selection (editable, 0, 0);
-
- gtk_editable_claim_selection (editable,
- editable->selection_start_pos != editable->selection_end_pos,
- event->time);
- }
- }
-
- return return_val;
-}
-
-static gint
-gtk_text_focus_in (GtkWidget *widget,
- GdkEventFocus *event)
-{
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_TEXT (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- TDEBUG (("in gtk_text_focus_in\n"));
-
- GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
- gtk_widget_draw_focus (widget);
-
-#ifdef USE_XIM
- if (GTK_EDITABLE(widget)->ic)
- gdk_im_begin (GTK_EDITABLE(widget)->ic, GTK_TEXT(widget)->text_area);
-#endif
-
- draw_cursor (GTK_TEXT(widget), TRUE);
-
- return FALSE;
-}
-
-static gint
-gtk_text_focus_out (GtkWidget *widget,
- GdkEventFocus *event)
-{
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_TEXT (widget), FALSE);
- g_return_val_if_fail (event != NULL, FALSE);
-
- TDEBUG (("in gtk_text_focus_out\n"));
-
- GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
- gtk_widget_draw_focus (widget);
-
- undraw_cursor (GTK_TEXT(widget), TRUE);
-
-#ifdef USE_XIM
- gdk_im_end ();
-#endif
+ {
+ extend_selection = FALSE;
+
+ gtk_editable_delete_selection (GTK_EDITABLE (old_editable));
+ position = text->point.index;
+ gtk_editable_insert_text (GTK_EDITABLE (old_editable), event->string, event->length, &position);
+
+ return_val = TRUE;
+ }
+ }
+
+ if (return_val && (old_editable->current_pos != initial_pos))
+ {
+ if (extend_selection)
+ {
+ if (old_editable->current_pos < old_editable->selection_start_pos)
+ gtk_text_set_selection (old_editable, old_editable->current_pos,
+ old_editable->selection_end_pos);
+ else if (old_editable->current_pos > old_editable->selection_end_pos)
+ gtk_text_set_selection (old_editable, old_editable->selection_start_pos,
+ old_editable->current_pos);
+ else
+ {
+ if (extend_start)
+ gtk_text_set_selection (old_editable, old_editable->current_pos,
+ old_editable->selection_end_pos);
+ else
+ gtk_text_set_selection (old_editable, old_editable->selection_start_pos,
+ old_editable->current_pos);
+ }
+ }
+ else
+ gtk_text_set_selection (old_editable, 0, 0);
+
+ gtk_old_editable_claim_selection (old_editable,
+ old_editable->selection_start_pos != old_editable->selection_end_pos,
+ event->time);
+ }
+ }