Remove draw_focus and draw_default (gtk_widget_draw_focus): remove this

2001-02-28  Havoc Pennington  <hp@redhat.com>

	* gtk/gtkwidget.h (struct _GtkWidgetClass): Remove draw_focus and
	draw_default
	(gtk_widget_draw_focus): remove this function; we could instead
	make it just gtk_widget_draw(), but in most cases I think the
	result would be broken user code, so think it's better to have
	that code not compile and get fixed
	(gtk_widget_draw_default): ditto

	* gtk/gtkwidget.c: Add default handlers for focus_in_event and
	focus_out_event that set/unset GTK_HAS_FOCUS and call queue_draw

	* gtk/gtkwindow.c (gtk_window_set_default): just queue a draw when
	widgets lose/get the default, instead of calling draw_default

	* docs/Changes-2.0.txt: note about all this

	Then fixed every widget in GTK, I won't list all the filenames.
This commit is contained in:
Havoc Pennington
2001-02-28 19:07:46 +00:00
committed by Havoc Pennington
parent c82dc58f7f
commit 56a2f2c628
24 changed files with 197 additions and 367 deletions

View File

@ -52,8 +52,6 @@ enum {
UNMAP,
REALIZE,
UNREALIZE,
DRAW_FOCUS,
DRAW_DEFAULT,
SIZE_REQUEST,
SIZE_ALLOCATE,
STATE_CHANGED,
@ -161,6 +159,10 @@ static gint gtk_widget_real_key_press_event (GtkWidget *widget,
GdkEventKey *event);
static gint gtk_widget_real_key_release_event (GtkWidget *widget,
GdkEventKey *event);
static gint gtk_widget_real_focus_in_event (GtkWidget *widget,
GdkEventFocus *event);
static gint gtk_widget_real_focus_out_event (GtkWidget *widget,
GdkEventFocus *event);
static void gtk_widget_style_set (GtkWidget *widget,
GtkStyle *previous_style);
static void gtk_widget_direction_changed (GtkWidget *widget,
@ -289,7 +291,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
klass->unmap = gtk_widget_real_unmap;
klass->realize = gtk_widget_real_realize;
klass->unrealize = gtk_widget_real_unrealize;
klass->draw_focus = NULL;
klass->size_request = gtk_widget_real_size_request;
klass->size_allocate = gtk_widget_real_size_allocate;
klass->state_changed = NULL;
@ -311,8 +312,8 @@ gtk_widget_class_init (GtkWidgetClass *klass)
klass->enter_notify_event = NULL;
klass->leave_notify_event = NULL;
klass->configure_event = NULL;
klass->focus_in_event = NULL;
klass->focus_out_event = NULL;
klass->focus_in_event = gtk_widget_real_focus_in_event;
klass->focus_out_event = gtk_widget_real_focus_out_event;
klass->map_event = NULL;
klass->unmap_event = NULL;
klass->window_state_event = NULL;
@ -396,20 +397,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
GTK_SIGNAL_OFFSET (GtkWidgetClass, unrealize),
gtk_marshal_VOID__VOID,
GTK_TYPE_NONE, 0);
widget_signals[DRAW_FOCUS] =
gtk_signal_new ("draw_focus",
GTK_RUN_FIRST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GtkWidgetClass, draw_focus),
gtk_marshal_VOID__VOID,
GTK_TYPE_NONE, 0);
widget_signals[DRAW_DEFAULT] =
gtk_signal_new ("draw_default",
GTK_RUN_FIRST,
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GtkWidgetClass, draw_default),
gtk_marshal_VOID__VOID,
GTK_TYPE_NONE, 0);
widget_signals[SIZE_REQUEST] =
gtk_signal_new ("size_request",
GTK_RUN_FIRST,
@ -1880,45 +1867,6 @@ gtk_widget_draw (GtkWidget *widget,
}
}
/**
* gtk_widget_draw_focus:
* @widget: a #GtkWidget
*
* This function is only for use in widget implementations. Invokes the
* "draw_focus" virtual method/signal on @widget, causing the focus
* rectangle to be drawn or undrawn according to the focus state of
* the widget. Normally called from widget implementations in the
* "focus_in_event" and "focus_out_event" handlers.
*
**/
void
gtk_widget_draw_focus (GtkWidget *widget)
{
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_WIDGET (widget));
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[DRAW_FOCUS]);
}
/**
* gtk_widget_draw_default:
* @widget: a #GtkWidget
*
* This function is only for use in widget implementations. Invokes the
* "draw_default" virtual method/signal on a widget, causing it to
* draw the default rectangle (indicating that the widget is
* the default widget, i.e. the one that's activated by pressing
* the enter key, generally).
**/
void
gtk_widget_draw_default (GtkWidget *widget)
{
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_WIDGET (widget));
gtk_signal_emit (GTK_OBJECT (widget), widget_signals[DRAW_DEFAULT]);
}
/**
* gtk_widget_size_request:
* @widget: a #GtkWidget
@ -2262,6 +2210,26 @@ gtk_widget_real_key_release_event (GtkWidget *widget,
return handled;
}
static gint
gtk_widget_real_focus_in_event (GtkWidget *widget,
GdkEventFocus *event)
{
GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
gtk_widget_queue_draw (widget);
return FALSE;
}
static gint
gtk_widget_real_focus_out_event (GtkWidget *widget,
GdkEventFocus *event)
{
GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
gtk_widget_queue_draw (widget);
return FALSE;
}
/**
* gtk_widget_event:
* @widget: a #GtkWidget