diff options
author | Juan Pablo Ugarte <jpu@src.gnome.org> | 2007-10-15 21:02:37 +0000 |
---|---|---|
committer | Juan Pablo Ugarte <jpu@src.gnome.org> | 2007-10-15 21:02:37 +0000 |
commit | 456827c97ede81fcb6aedfd602535ec078b2246e (patch) | |
tree | 2fe1472e680977cb1f78cf0997e9b90167011f96 | |
parent | f905cd549fa660dd79abb06fa88fd6d086b8d7e6 (diff) | |
download | glade-456827c97ede81fcb6aedfd602535ec078b2246e.tar.gz |
disable GtkImage::stock when edit type is not in stock mode. This fixs a
* plugins/gtk+/glade-gtk.c: disable GtkImage::stock when edit type is not in stock mode.
This fixs a bug pasting a filename GtkImage.
* gladeui/glade-property-class.c: glade_property_class_make_object_from_string() now returns NULL
for pixbuf props on an empty string, so you can set up pixbuf props back to NULL.
* gladeui/glade-widget.c: almost fixed bug #480495, it does not crash anymore.
It refuses to reparent a widget if it cant embed it.
svn path=/trunk/; revision=1629
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | gladeui/glade-property-class.c | 2 | ||||
-rw-r--r-- | gladeui/glade-widget.c | 29 | ||||
-rw-r--r-- | plugins/gtk+/glade-gtk.c | 2 |
4 files changed, 31 insertions, 13 deletions
@@ -1,3 +1,14 @@ +2007-10-15 Juan Pablo Ugarte <juanpablougarte@gmail.com> + + * plugins/gtk+/glade-gtk.c: disable GtkImage::stock when edit type is not in stock mode. + This fixs a bug pasting a filename GtkImage. + + * gladeui/glade-property-class.c: glade_property_class_make_object_from_string() now returns NULL + for pixbuf props on an empty string, so you can set up pixbuf props back to NULL. + + * gladeui/glade-widget.c: almost fixed bug #480495, it does not crash anymore. + It refuses to reparent a widget if it cant embed it. + 2007-09-17 Tristan Van Berkom <tvb@gnome.org> * NEWS, configure.ac: Rolling 3.4.0 diff --git a/gladeui/glade-property-class.c b/gladeui/glade-property-class.c index 38c021f6..ad1a5574 100644 --- a/gladeui/glade-property-class.c +++ b/gladeui/glade-property-class.c @@ -760,6 +760,8 @@ glade_property_class_make_object_from_string (GladePropertyClass *property_class { GdkPixbuf *pixbuf; + if (*string == '\0') return NULL; + fullpath = glade_project_resource_fullpath (project, string); if ((pixbuf = gdk_pixbuf_new_from_file (fullpath, NULL)) == NULL) diff --git a/gladeui/glade-widget.c b/gladeui/glade-widget.c index 160063cb..e041e233 100644 --- a/gladeui/glade-widget.c +++ b/gladeui/glade-widget.c @@ -74,7 +74,7 @@ static GladeWidget *glade_widget_new_from_widget_info (GladeWidgetInfo *i GladeWidget *parent); static gboolean glade_window_is_embedded (GtkWindow *window); -static void glade_widget_embed (GladeWidget *widget); +static gboolean glade_widget_embed (GladeWidget *widget); enum { @@ -2163,11 +2163,8 @@ glade_widget_show (GladeWidget *widget) g_return_if_fail (GLADE_IS_WIDGET (widget)); /* Position window at saved coordinates or in the center */ - if (GTK_IS_WINDOW (widget->object)) + if (GTK_IS_WINDOW (widget->object) && glade_widget_embed (widget)) { - if (!glade_window_is_embedded (GTK_WINDOW (widget->object))) - glade_widget_embed (widget); - view = glade_design_view_get_from_project (glade_widget_get_project (widget)); layout = GTK_WIDGET (glade_design_view_get_layout (view)); @@ -2178,7 +2175,8 @@ glade_widget_show (GladeWidget *widget) gtk_widget_show_all (GTK_WIDGET (widget->object)); - } else if (GTK_IS_WIDGET (widget->object)) { + } else if (GTK_IS_WIDGET (widget->object)) + { gtk_widget_show_all (GTK_WIDGET (widget->object)); } widget->visible = TRUE; @@ -4230,21 +4228,24 @@ embedded_window_size_allocate_handler (GtkWidget *widget) * * Embeds a window by signal connection method */ -static void +static gboolean glade_widget_embed (GladeWidget *widget) { GtkWindow *window; - g_return_if_fail (GLADE_IS_WIDGET (widget)); - g_return_if_fail (GTK_IS_WINDOW (widget->object)); + g_return_val_if_fail (GLADE_IS_WIDGET (widget), FALSE); + g_return_val_if_fail (GTK_IS_WINDOW (widget->object), FALSE); window = GTK_WINDOW (widget->object); - if (glade_window_is_embedded (window) || GTK_WIDGET_REALIZED (GTK_WIDGET (window))) { - g_critical ("Cannot embed a window that is already realized or embedded"); - return; + if (glade_window_is_embedded (window)) return TRUE; + + if (GTK_WIDGET_REALIZED (GTK_WIDGET (window))) + { + g_critical ("Cannot embed a window that is already realized"); + return FALSE; } - + GTK_WIDGET_UNSET_FLAGS (GTK_WIDGET (window), GTK_TOPLEVEL); gtk_container_set_resize_mode (GTK_CONTAINER (window), GTK_RESIZE_PARENT); @@ -4256,5 +4257,7 @@ glade_widget_embed (GladeWidget *widget) /* mark window as embedded */ g_object_set_qdata (G_OBJECT (window), embedded_window_get_quark (), GINT_TO_POINTER (TRUE)); + + return TRUE; } diff --git a/plugins/gtk+/glade-gtk.c b/plugins/gtk+/glade-gtk.c index e6d998b6..4c8daaab 100644 --- a/plugins/gtk+/glade-gtk.c +++ b/plugins/gtk+/glade-gtk.c @@ -4269,6 +4269,7 @@ glade_gtk_image_disable_stock (GladeWidget *gwidget) { glade_widget_property_set (gwidget, "glade-stock", NULL); glade_widget_property_set (gwidget, "stock", NULL); + glade_widget_property_set_enabled (gwidget, "stock", FALSE); glade_widget_property_set_sensitive (gwidget, "glade-stock", FALSE, _("This only applies with stock type images")); } @@ -4377,6 +4378,7 @@ glade_gtk_image_set_type (GObject *object, const GValue *value) case GLADEGTK_IMAGE_STOCK: glade_gtk_image_disable_filename (gwidget); glade_gtk_image_disable_icon_name (gwidget); + glade_widget_property_set_enabled (gwidget, "stock", FALSE); glade_gtk_image_refresh (gwidget, "glade-stock"); break; |