scroll to cursor on grab focus, unless it's caused by button click, #59708

2001-10-23  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor
	on grab focus, unless it's caused by button click, #59708
This commit is contained in:
Havoc Pennington 2001-10-23 16:07:05 +00:00 committed by Havoc Pennington
parent 4e32ede287
commit 13a24b1b36
9 changed files with 56 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2001-10-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor
on grab focus, unless it's caused by button click, #59708
Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com> Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS.

View File

@ -1,3 +1,8 @@
2001-10-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor
on grab focus, unless it's caused by button click, #59708
Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com> Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS.

View File

@ -1,3 +1,8 @@
2001-10-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor
on grab focus, unless it's caused by button click, #59708
Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com> Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS.

View File

@ -1,3 +1,8 @@
2001-10-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor
on grab focus, unless it's caused by button click, #59708
Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com> Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS.

View File

@ -1,3 +1,8 @@
2001-10-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor
on grab focus, unless it's caused by button click, #59708
Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com> Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS.

View File

@ -1,3 +1,8 @@
2001-10-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor
on grab focus, unless it's caused by button click, #59708
Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com> Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS.

View File

@ -1,3 +1,8 @@
2001-10-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_grab_focus): scroll to cursor
on grab focus, unless it's caused by button click, #59708
Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com> Tue Oct 23 11:53:00 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS. * gtk/Makefile.am (INCLUDES): Remove G_DISABLE_CONST_RETURNS.

View File

@ -172,6 +172,7 @@ static gint gtk_text_view_motion_event (GtkWidget *widget,
static gint gtk_text_view_expose_event (GtkWidget *widget, static gint gtk_text_view_expose_event (GtkWidget *widget,
GdkEventExpose *expose); GdkEventExpose *expose);
static void gtk_text_view_draw_focus (GtkWidget *widget); static void gtk_text_view_draw_focus (GtkWidget *widget);
static void gtk_text_view_grab_focus (GtkWidget *widget);
/* Source side drag signals */ /* Source side drag signals */
static void gtk_text_view_drag_begin (GtkWidget *widget, static void gtk_text_view_drag_begin (GtkWidget *widget,
@ -3272,7 +3273,9 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
text_view = GTK_TEXT_VIEW (widget); text_view = GTK_TEXT_VIEW (widget);
text_view->disable_scroll_on_focus = TRUE;
gtk_widget_grab_focus (widget); gtk_widget_grab_focus (widget);
text_view->disable_scroll_on_focus = FALSE;
if (event->window != text_view->text_window->bin_window) if (event->window != text_view->text_window->bin_window)
{ {
@ -3647,6 +3650,21 @@ gtk_text_view_draw_focus (GtkWidget *widget)
} }
} }
static void
gtk_text_view_grab_focus (GtkWidget *widget)
{
GtkTextView *text_view;
text_view = GTK_TEXT_VIEW (widget);
GTK_WIDGET_CLASS (parent_class)->grab_focus (widget);
if (!text_view->disable_scroll_on_focus)
gtk_text_view_scroll_mark_onscreen (text_view,
gtk_text_buffer_get_mark (get_buffer (text_view),
"insert"));
}
/* /*
* Container * Container
*/ */

View File

@ -93,6 +93,9 @@ struct _GtkTextView
/* just selected a word or line via double/triple click */ /* just selected a word or line via double/triple click */
guint just_selected_element : 1; guint just_selected_element : 1;
/* disable scrolling to cursor on focus */
guint disable_scroll_on_focus : 1;
/* debug flag - means that we've validated onscreen since the /* debug flag - means that we've validated onscreen since the
* last "invalidate" signal from the layout * last "invalidate" signal from the layout
*/ */