# HG changeset patch # User Nathan Walp # Date 1049594996 0 # Node ID 44945824ba60bac52ff5dc51120fb90dc6a6f5a2 # Parent ad42102dd85f9724c9e039404e358ff8340a7cb6 [gaim-migrate @ 5394] javabsp fixed im image scaling I fixed im image saving, and the button annoyingly staying toggled committer: Tailor Script diff -r ad42102dd85f -r 44945824ba60 src/gtkconv.c --- a/src/gtkconv.c Sun Apr 06 01:27:56 2003 +0000 +++ b/src/gtkconv.c Sun Apr 06 02:09:56 2003 +0000 @@ -171,6 +171,8 @@ gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(gtkconv->entry_buffer), buf, -1); g_free(buf); + + set_toggle(gtkconv->toolbar.image, FALSE); } static gint @@ -202,26 +204,26 @@ gtkconv = GAIM_GTK_CONVERSATION(conv); - window = gtk_file_selection_new(_("Gaim - Insert Image")); - g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir()); - gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); - - g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), - "user_data", conv); - g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), - "clicked", G_CALLBACK(do_insert_image_cb), window); - g_signal_connect_swapped( - G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button), - "clicked", G_CALLBACK(gtk_widget_destroy), window); - - gtk_widget_show(window); -/* - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image), - FALSE); - */ + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtkconv->toolbar.image))) { + window = gtk_file_selection_new(_("Gaim - Insert Image")); + g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir()); + gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); + + g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), + "user_data", conv); + g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), + "clicked", G_CALLBACK(do_insert_image_cb), window); + g_signal_connect_swapped( + G_OBJECT(GTK_FILE_SELECTION(window)->cancel_button), + "clicked", G_CALLBACK(gtk_widget_destroy), window); + + gtk_widget_show(window); + } else { + gtk_widget_grab_focus(gtkconv->entry); + } } -static void + static void insert_link_cb(GtkWidget *w, struct gaim_conversation *conv) { struct gaim_gtk_conversation *gtkconv; diff -r ad42102dd85f -r 44945824ba60 src/gtkimhtml.c --- a/src/gtkimhtml.c Sun Apr 06 01:27:56 2003 +0000 +++ b/src/gtkimhtml.c Sun Apr 06 02:09:56 2003 +0000 @@ -1433,12 +1433,15 @@ GTK_IMHTML_SCALABLE(im_image)->scale = gaim_im_image_scale; GTK_IMHTML_SCALABLE(im_image)->add_to = gaim_im_image_add_to; GTK_IMHTML_SCALABLE(im_image)->free = gaim_im_image_free; + + im_image->pixbuf = img; im_image->image = image; im_image->width = gdk_pixbuf_get_width(img); im_image->height = gdk_pixbuf_get_height(img); im_image->mark = NULL; im_image->filename = filename; + g_object_ref(img); return GTK_IMHTML_SCALABLE(im_image); } @@ -1447,7 +1450,6 @@ gaim_im_image *image = (gaim_im_image *)scale; if(image->width > width || image->height > height){ - GdkPixbuf *old_image = gtk_image_get_pixbuf(image->image); GdkPixbuf *new_image = NULL; float factor; int new_width = image->width, new_height = image->height; @@ -1463,7 +1465,7 @@ new_width = new_width * factor; } - new_image = gdk_pixbuf_scale_simple(old_image, new_width, new_height, GDK_INTERP_BILINEAR); + new_image = gdk_pixbuf_scale_simple(image->pixbuf, new_width, new_height, GDK_INTERP_BILINEAR); gtk_image_set_from_pixbuf(image->image, new_image); g_object_unref(G_OBJECT(new_image)); } @@ -1472,9 +1474,8 @@ void gaim_im_image_free(GtkIMHtmlScalable *scale) { gaim_im_image *image = (gaim_im_image *)scale; -/* - g_object_unref(image->image); -*/ + + g_object_unref(image->pixbuf); g_free(image->filename); g_free(scale); } @@ -1587,7 +1588,7 @@ type = g_strdup("png"); } - gdk_pixbuf_save(gtk_image_get_pixbuf(image->image), filename, type, &error, NULL); + gdk_pixbuf_save(image->pixbuf, filename, type, &error, NULL); if(error){ gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, diff -r ad42102dd85f -r 44945824ba60 src/gtkimhtml.h --- a/src/gtkimhtml.h Sun Apr 06 01:27:56 2003 +0000 +++ b/src/gtkimhtml.h Sun Apr 06 02:09:56 2003 +0000 @@ -136,6 +136,7 @@ typedef struct { GtkIMHtmlScalable scalable; GtkImage *image; + GdkPixbuf *pixbuf; GtkTextMark *mark; gchar *filename; int width;