Fix inconsistency in GTK_WIDGET_SAVED_STATE (#435840, Xan Lopez)
2007-06-13 Cody Russell <bratsche@gnome.org> * gtk/gtkwidget.c: Fix inconsistency in GTK_WIDGET_SAVED_STATE (#435840, Xan Lopez) svn path=/trunk/; revision=18122
This commit is contained in:
committed by
Cody Russell
parent
87ae968f9e
commit
5c48e783d4
@ -1,3 +1,8 @@
|
||||
2007-06-13 Cody Russell <bratsche@gnome.org>
|
||||
|
||||
* gtk/gtkwidget.c: Fix inconsistency in GTK_WIDGET_SAVED_STATE
|
||||
(#435840, Xan Lopez)
|
||||
|
||||
2007-06-13 Kristian Rietveld <kris@imendio.com>
|
||||
|
||||
* gtk/gtk.symbols
|
||||
|
||||
@ -7561,36 +7561,28 @@ static void
|
||||
gtk_widget_propagate_state (GtkWidget *widget,
|
||||
GtkStateData *data)
|
||||
{
|
||||
guint8 old_state;
|
||||
guint8 old_state = GTK_WIDGET_STATE (widget);
|
||||
guint8 old_saved_state = GTK_WIDGET_SAVED_STATE (widget);
|
||||
|
||||
/* don't call this function with state==GTK_STATE_INSENSITIVE,
|
||||
* parent_sensitive==TRUE on a sensitive widget
|
||||
*/
|
||||
|
||||
old_state = GTK_WIDGET_STATE (widget);
|
||||
|
||||
if (data->parent_sensitive)
|
||||
{
|
||||
GTK_WIDGET_SET_FLAGS (widget, GTK_PARENT_SENSITIVE);
|
||||
GTK_WIDGET_SET_FLAGS (widget, GTK_PARENT_SENSITIVE);
|
||||
else
|
||||
GTK_WIDGET_UNSET_FLAGS (widget, GTK_PARENT_SENSITIVE);
|
||||
|
||||
if (GTK_WIDGET_IS_SENSITIVE (widget))
|
||||
{
|
||||
if (data->state_restoration)
|
||||
GTK_WIDGET_STATE (widget) = GTK_WIDGET_SAVED_STATE (widget);
|
||||
else
|
||||
GTK_WIDGET_STATE (widget) = data->state;
|
||||
}
|
||||
if (GTK_WIDGET_IS_SENSITIVE (widget))
|
||||
{
|
||||
if (data->state_restoration)
|
||||
GTK_WIDGET_STATE (widget) = GTK_WIDGET_SAVED_STATE (widget);
|
||||
else
|
||||
{
|
||||
GTK_WIDGET_STATE (widget) = GTK_STATE_INSENSITIVE;
|
||||
if (!data->state_restoration &&
|
||||
data->state != GTK_STATE_INSENSITIVE)
|
||||
GTK_WIDGET_SAVED_STATE (widget) = data->state;
|
||||
}
|
||||
GTK_WIDGET_STATE (widget) = data->state;
|
||||
}
|
||||
else
|
||||
{
|
||||
GTK_WIDGET_UNSET_FLAGS (widget, GTK_PARENT_SENSITIVE);
|
||||
if (!data->state_restoration)
|
||||
{
|
||||
if (data->state != GTK_STATE_INSENSITIVE)
|
||||
@ -7610,19 +7602,19 @@ gtk_widget_propagate_state (GtkWidget *widget,
|
||||
gtk_window_set_focus (GTK_WINDOW (window), NULL);
|
||||
}
|
||||
|
||||
if (old_state != GTK_WIDGET_STATE (widget))
|
||||
if (old_state != GTK_WIDGET_STATE (widget) ||
|
||||
old_saved_state != GTK_WIDGET_SAVED_STATE (widget))
|
||||
{
|
||||
g_object_ref (widget);
|
||||
|
||||
|
||||
if (!GTK_WIDGET_IS_SENSITIVE (widget) && GTK_WIDGET_HAS_GRAB (widget))
|
||||
gtk_grab_remove (widget);
|
||||
|
||||
|
||||
g_signal_emit (widget, widget_signals[STATE_CHANGED], 0, old_state);
|
||||
|
||||
|
||||
if (GTK_IS_CONTAINER (widget))
|
||||
{
|
||||
data->parent_sensitive = (GTK_WIDGET_IS_SENSITIVE (widget) != FALSE);
|
||||
data->state = GTK_WIDGET_STATE (widget);
|
||||
if (data->use_forall)
|
||||
gtk_container_forall (GTK_CONTAINER (widget),
|
||||
(GtkCallback) gtk_widget_propagate_state,
|
||||
|
||||
Reference in New Issue
Block a user