*** empty log message ***
This commit is contained in:
@ -1,5 +1,11 @@
|
|||||||
2004-11-15 Matthias Clasen <mclasen@redhat.com>
|
2004-11-15 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkbutton.c:
|
||||||
|
* gtk/gtkimagemenuitem.c: Don't use one signal handler per
|
||||||
|
instance to track changes to the gtk-menu-images and
|
||||||
|
gtk-button-images settings. Instead use a single handler which
|
||||||
|
iterates over the widget hierarchy. (#143668)
|
||||||
|
|
||||||
* gtk/gtktreemodel.c (gtk_tree_path_prev): Return FALSE if
|
* gtk/gtktreemodel.c (gtk_tree_path_prev): Return FALSE if
|
||||||
depth is 0 (noticed by Tim Janik)
|
depth is 0 (noticed by Tim Janik)
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,11 @@
|
|||||||
2004-11-15 Matthias Clasen <mclasen@redhat.com>
|
2004-11-15 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkbutton.c:
|
||||||
|
* gtk/gtkimagemenuitem.c: Don't use one signal handler per
|
||||||
|
instance to track changes to the gtk-menu-images and
|
||||||
|
gtk-button-images settings. Instead use a single handler which
|
||||||
|
iterates over the widget hierarchy. (#143668)
|
||||||
|
|
||||||
* gtk/gtktreemodel.c (gtk_tree_path_prev): Return FALSE if
|
* gtk/gtktreemodel.c (gtk_tree_path_prev): Return FALSE if
|
||||||
depth is 0 (noticed by Tim Janik)
|
depth is 0 (noticed by Tim Janik)
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,11 @@
|
|||||||
2004-11-15 Matthias Clasen <mclasen@redhat.com>
|
2004-11-15 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkbutton.c:
|
||||||
|
* gtk/gtkimagemenuitem.c: Don't use one signal handler per
|
||||||
|
instance to track changes to the gtk-menu-images and
|
||||||
|
gtk-button-images settings. Instead use a single handler which
|
||||||
|
iterates over the widget hierarchy. (#143668)
|
||||||
|
|
||||||
* gtk/gtktreemodel.c (gtk_tree_path_prev): Return FALSE if
|
* gtk/gtktreemodel.c (gtk_tree_path_prev): Return FALSE if
|
||||||
depth is 0 (noticed by Tim Janik)
|
depth is 0 (noticed by Tim Janik)
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,11 @@
|
|||||||
2004-11-15 Matthias Clasen <mclasen@redhat.com>
|
2004-11-15 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkbutton.c:
|
||||||
|
* gtk/gtkimagemenuitem.c: Don't use one signal handler per
|
||||||
|
instance to track changes to the gtk-menu-images and
|
||||||
|
gtk-button-images settings. Instead use a single handler which
|
||||||
|
iterates over the widget hierarchy. (#143668)
|
||||||
|
|
||||||
* gtk/gtktreemodel.c (gtk_tree_path_prev): Return FALSE if
|
* gtk/gtktreemodel.c (gtk_tree_path_prev): Return FALSE if
|
||||||
depth is 0 (noticed by Tim Janik)
|
depth is 0 (noticed by Tim Janik)
|
||||||
|
|
||||||
|
|||||||
@ -76,8 +76,6 @@ struct _GtkButtonPrivate
|
|||||||
{
|
{
|
||||||
gfloat xalign;
|
gfloat xalign;
|
||||||
gfloat yalign;
|
gfloat yalign;
|
||||||
GtkSettings *settings;
|
|
||||||
guint show_image_connection;
|
|
||||||
GtkWidget *image;
|
GtkWidget *image;
|
||||||
guint align_set : 1;
|
guint align_set : 1;
|
||||||
};
|
};
|
||||||
@ -1613,43 +1611,63 @@ show_image_change_notify (GtkButton *button)
|
|||||||
GtkButtonPrivate *priv = GTK_BUTTON_GET_PRIVATE (button);
|
GtkButtonPrivate *priv = GTK_BUTTON_GET_PRIVATE (button);
|
||||||
|
|
||||||
if (priv->image)
|
if (priv->image)
|
||||||
g_object_set (priv->image, "visible", show_image (button), NULL);
|
{
|
||||||
|
if (show_image (button))
|
||||||
|
gtk_widget_show (priv->image);
|
||||||
|
else
|
||||||
|
gtk_widget_hide (priv->image);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
traverse_container (GtkWidget *widget,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
if (GTK_IS_BUTTON (widget))
|
||||||
|
show_image_change_notify (GTK_BUTTON (widget));
|
||||||
|
else if (GTK_IS_CONTAINER (widget))
|
||||||
|
gtk_container_forall (GTK_CONTAINER (widget), traverse_container, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_button_setting_changed (GtkSettings *settings)
|
||||||
|
{
|
||||||
|
GList *list;
|
||||||
|
|
||||||
|
list = gtk_window_list_toplevels ();
|
||||||
|
|
||||||
|
for (; list; list = list->next)
|
||||||
|
gtk_container_forall (GTK_CONTAINER (list->data), traverse_container, NULL);
|
||||||
|
|
||||||
|
g_list_free (list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_button_screen_changed (GtkWidget *widget,
|
gtk_button_screen_changed (GtkWidget *widget,
|
||||||
GdkScreen *previous_screen)
|
GdkScreen *previous_screen)
|
||||||
{
|
{
|
||||||
GtkButtonPrivate *priv = GTK_BUTTON_GET_PRIVATE (widget);
|
|
||||||
GtkSettings *settings;
|
GtkSettings *settings;
|
||||||
|
guint show_image_connection;
|
||||||
|
|
||||||
if (gtk_widget_has_screen (widget))
|
if (!gtk_widget_has_screen (widget))
|
||||||
settings = gtk_widget_get_settings (widget);
|
|
||||||
else
|
|
||||||
settings = NULL;
|
|
||||||
|
|
||||||
if (settings == priv->settings)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (priv->settings)
|
settings = gtk_widget_get_settings (widget);
|
||||||
{
|
|
||||||
g_signal_handler_disconnect (priv->settings, priv->show_image_connection);
|
|
||||||
g_object_unref (priv->settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (settings)
|
show_image_connection =
|
||||||
{
|
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (settings),
|
||||||
priv->show_image_connection =
|
"gtk-button-connection"));
|
||||||
g_signal_connect_swapped (settings,
|
|
||||||
"notify::gtk-button-images",
|
|
||||||
G_CALLBACK (show_image_change_notify),
|
|
||||||
widget);
|
|
||||||
|
|
||||||
g_object_ref (settings);
|
if (show_image_connection)
|
||||||
priv->settings = settings;
|
return;
|
||||||
}
|
|
||||||
else
|
show_image_connection =
|
||||||
priv->settings = NULL;
|
g_signal_connect (settings, "notify::gtk-button-images",
|
||||||
|
G_CALLBACK (gtk_button_setting_changed), 0);
|
||||||
|
g_object_set_data (G_OBJECT (settings),
|
||||||
|
"gtk-button-connection",
|
||||||
|
GINT_TO_POINTER (show_image_connection));
|
||||||
|
|
||||||
show_image_change_notify (GTK_BUTTON (widget));
|
show_image_change_notify (GTK_BUTTON (widget));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,16 +32,8 @@
|
|||||||
#include "gtkstock.h"
|
#include "gtkstock.h"
|
||||||
#include "gtkiconfactory.h"
|
#include "gtkiconfactory.h"
|
||||||
#include "gtkimage.h"
|
#include "gtkimage.h"
|
||||||
|
#include "gtkcontainer.h"
|
||||||
typedef struct _GtkImageMenuItemPrivate GtkImageMenuItemPrivate;
|
#include "gtkwindow.h"
|
||||||
|
|
||||||
struct _GtkImageMenuItemPrivate
|
|
||||||
{
|
|
||||||
GtkSettings *settings;
|
|
||||||
guint show_image_connection;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define GTK_IMAGE_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_IMAGE_MENU_ITEM, GtkImageMenuItemPrivate))
|
|
||||||
|
|
||||||
static void gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass);
|
static void gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass);
|
||||||
static void gtk_image_menu_item_init (GtkImageMenuItem *image_menu_item);
|
static void gtk_image_menu_item_init (GtkImageMenuItem *image_menu_item);
|
||||||
@ -147,7 +139,6 @@ gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass)
|
|||||||
TRUE,
|
TRUE,
|
||||||
G_PARAM_READWRITE));
|
G_PARAM_READWRITE));
|
||||||
|
|
||||||
g_type_class_add_private (gobject_class, sizeof (GtkImageMenuItemPrivate));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -552,43 +543,63 @@ static void
|
|||||||
show_image_change_notify (GtkImageMenuItem *image_menu_item)
|
show_image_change_notify (GtkImageMenuItem *image_menu_item)
|
||||||
{
|
{
|
||||||
if (image_menu_item->image)
|
if (image_menu_item->image)
|
||||||
g_object_set (image_menu_item->image, "visible", show_image (image_menu_item), NULL);
|
{
|
||||||
|
if (show_image (image_menu_item))
|
||||||
|
gtk_widget_show (image_menu_item->image);
|
||||||
|
else
|
||||||
|
gtk_widget_hide (image_menu_item->image);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
traverse_container (GtkWidget *widget,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
if (GTK_IS_IMAGE_MENU_ITEM (widget))
|
||||||
|
show_image_change_notify (GTK_IMAGE_MENU_ITEM (widget));
|
||||||
|
else if (GTK_IS_CONTAINER (widget))
|
||||||
|
gtk_container_forall (GTK_CONTAINER (widget), traverse_container, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_image_menu_item_setting_changed (GtkSettings *settings)
|
||||||
|
{
|
||||||
|
GList *list;
|
||||||
|
|
||||||
|
list = gtk_window_list_toplevels ();
|
||||||
|
|
||||||
|
for (; list; list = list->next)
|
||||||
|
gtk_container_forall (GTK_CONTAINER (list->data), traverse_container, NULL);
|
||||||
|
|
||||||
|
g_list_free (list);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_image_menu_item_screen_changed (GtkWidget *widget,
|
gtk_image_menu_item_screen_changed (GtkWidget *widget,
|
||||||
GdkScreen *previous_screen)
|
GdkScreen *previous_screen)
|
||||||
{
|
{
|
||||||
GtkImageMenuItemPrivate *priv = GTK_IMAGE_MENU_ITEM_GET_PRIVATE (widget);
|
|
||||||
GtkSettings *settings;
|
GtkSettings *settings;
|
||||||
|
guint show_image_connection;
|
||||||
|
|
||||||
if (gtk_widget_has_screen (widget))
|
if (!gtk_widget_has_screen (widget))
|
||||||
settings = gtk_widget_get_settings (widget);
|
|
||||||
else
|
|
||||||
settings = NULL;
|
|
||||||
|
|
||||||
if (settings == priv->settings)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (priv->settings)
|
settings = gtk_widget_get_settings (widget);
|
||||||
{
|
|
||||||
g_signal_handler_disconnect (priv->settings, priv->show_image_connection);
|
|
||||||
g_object_unref (priv->settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (settings)
|
show_image_connection =
|
||||||
{
|
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (settings),
|
||||||
priv->show_image_connection =
|
"gtk-image-menu-item-connection"));
|
||||||
g_signal_connect_swapped (settings,
|
|
||||||
"notify::gtk-menu-images",
|
|
||||||
G_CALLBACK (show_image_change_notify),
|
|
||||||
widget);
|
|
||||||
|
|
||||||
g_object_ref (settings);
|
if (show_image_connection)
|
||||||
priv->settings = settings;
|
return;
|
||||||
}
|
|
||||||
else
|
show_image_connection =
|
||||||
priv->settings = NULL;
|
g_signal_connect (settings, "notify::gtk-menu-images",
|
||||||
|
G_CALLBACK (gtk_image_menu_item_setting_changed), 0);
|
||||||
|
g_object_set_data (G_OBJECT (settings),
|
||||||
|
"gtk-image-menu-item-connection",
|
||||||
|
GINT_TO_POINTER (show_image_connection));
|
||||||
|
|
||||||
show_image_change_notify (GTK_IMAGE_MENU_ITEM (widget));
|
show_image_change_notify (GTK_IMAGE_MENU_ITEM (widget));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user