diff options
-rw-r--r-- | ChangeLog | 29 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | embed/mozilla/GeckoPrintSession.cpp | 2 | ||||
-rw-r--r-- | embed/mozilla/GtkNSSDialogs.cpp | 2 | ||||
-rw-r--r-- | lib/egg/.cvsignore | 1 | ||||
-rw-r--r-- | lib/ephy-print-utils.c | 2 | ||||
-rw-r--r-- | lib/widgets/ephy-spinner.c | 88 | ||||
-rw-r--r-- | m4/gecko.m4 | 5 | ||||
-rwxr-xr-x | src/ephy-statusbar.c | 1 | ||||
-rw-r--r-- | src/popup-commands.c | 1 |
10 files changed, 68 insertions, 65 deletions
@@ -1,3 +1,32 @@ +2006-12-04 Christian Persch <chpe@cvs.gnome.org> + + * configure.ac: + + Version 2.17.3. + + * embed/mozilla/GtkNSSDialogs.cpp: + + Use NULL for gtk_label_new instead of "". + + * lib/ephy-print-utils.c: + (ephy_print_utils_page_setup_new_from_key_file): + + Fix possible invalid free. + + * lib/widgets/ephy-spinner.c: (ephy_spinner_images_unref), + (ephy_spinner_images_load), (ephy_spinner_load_images), + (ephy_spinner_expose), (bump_spinner_frame_cb), + (ephy_spinner_start), (ephy_spinner_stop): + + Fix compliance with icon theme spec by skipping the first frame in the + animation when in spinning mode. Bug #382207. + Try the "process-working" icon first and fall back to "gnome-spinner" + when it's not available. + + * m4/gecko.m4: + + Updated. + 2006-12-04 Luca Ferretti <elle.uca@libero.it> * configure.in: diff --git a/configure.ac b/configure.ac index 01a2af746..870fb2c05 100644 --- a/configure.ac +++ b/configure.ac @@ -15,7 +15,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -AC_INIT([GNOME Web Browser],[2.17.2.90],[http://bugzilla.gnome.org/enter_bug.cgi?product=epiphany],[epiphany]) +AC_INIT([GNOME Web Browser],[2.17.3],[http://bugzilla.gnome.org/enter_bug.cgi?product=epiphany],[epiphany]) GNOME_COMMON_INIT diff --git a/embed/mozilla/GeckoPrintSession.cpp b/embed/mozilla/GeckoPrintSession.cpp index 290b0eb7a..4c60bc74f 100644 --- a/embed/mozilla/GeckoPrintSession.cpp +++ b/embed/mozilla/GeckoPrintSession.cpp @@ -130,7 +130,7 @@ GeckoPrintSession::SetSettings (GtkPrintSettings *aSettings, { char *base, *tmpName; - /* FIXME: use pure glib here! */ + /* FIXME: use pure glib here (g_mkstemp)! */ base = g_build_filename (ephy_file_tmp_dir (), "print-XXXXXX", (const char *) NULL); tmpName = ephy_file_tmp_filename (base, "ps"); g_free (base); diff --git a/embed/mozilla/GtkNSSDialogs.cpp b/embed/mozilla/GtkNSSDialogs.cpp index 391d6cbcd..ddf14848f 100644 --- a/embed/mozilla/GtkNSSDialogs.cpp +++ b/embed/mozilla/GtkNSSDialogs.cpp @@ -148,7 +148,7 @@ higgy_indent_widget (GtkWidget *widget) hbox = gtk_hbox_new (FALSE, 6); - label = gtk_label_new (""); + label = gtk_label_new (NULL); gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, TRUE, 6); gtk_widget_show (label); diff --git a/lib/egg/.cvsignore b/lib/egg/.cvsignore index dbe4c8909..430b664b4 100644 --- a/lib/egg/.cvsignore +++ b/lib/egg/.cvsignore @@ -5,6 +5,7 @@ eggmarshalers.c stamp-* eggtypebuiltins.? *.lo +*.la .deps .libs diff --git a/lib/ephy-print-utils.c b/lib/ephy-print-utils.c index 2c4320805..b014ad807 100644 --- a/lib/ephy-print-utils.c +++ b/lib/ephy-print-utils.c @@ -256,7 +256,7 @@ ephy_print_utils_page_setup_new_from_key_file (GKeyFile *key_file, GError **error) { GtkPageSetup *page_setup = NULL; - GtkPaperSize *paper_size; + GtkPaperSize *paper_size = NULL; gdouble width, height, top, bottom, left, right; char *name = NULL, *ppd_name = NULL, *display_name = NULL, *orientation = NULL; gboolean retval = TRUE; diff --git a/lib/widgets/ephy-spinner.c b/lib/widgets/ephy-spinner.c index dcb0e0ab6..f1c17b763 100644 --- a/lib/widgets/ephy-spinner.c +++ b/lib/widgets/ephy-spinner.c @@ -76,14 +76,13 @@ typedef struct GtkIconSize size; int width; int height; - GdkPixbuf *quiescent_pixbuf; GdkPixbuf **animation_pixbufs; guint n_animation_pixbufs; } EphySpinnerImages; #define LAST_ICON_SIZE GTK_ICON_SIZE_DIALOG + 1 -#define SPINNER_ICON_NAME "gnome-spinner" -#define SPINNER_REST_ICON_NAME "gnome-spinner-rest" +#define SPINNER_ICON_NAME "process-working" +#define SPINNER_FALLBAC_ICON_NAME "gnome-spinner" #define EPHY_SPINNER_IMAGES_INVALID ((EphySpinnerImages *) 0x1) typedef struct @@ -154,8 +153,6 @@ ephy_spinner_images_unref (EphySpinnerImages *images) } g_free (images->animation_pixbufs); - g_object_unref (images->quiescent_pixbuf); - g_free (images); } } @@ -234,7 +231,6 @@ ephy_spinner_images_load (GdkScreen *screen, GtkIconSize icon_size) { EphySpinnerImages *images; - GdkPixbuf *rest_pixbuf = NULL; GdkPixbuf *icon_pixbuf, *pixbuf; GtkIconInfo *icon_info = NULL; int grid_width, grid_height, x, y, requested_size, size, isw, ish, n; @@ -250,44 +246,25 @@ ephy_spinner_images_load (GdkScreen *screen, requested_size = MAX (ish, isw); - /* Load the rest icon */ - icon_info = gtk_icon_theme_lookup_icon (icon_theme, - SPINNER_REST_ICON_NAME, - requested_size, 0); - if (icon_info == NULL) - { - g_warning ("Throbber rest icon not found"); - goto loser; - } - - size = gtk_icon_info_get_base_size (icon_info); - icon = gtk_icon_info_get_filename (icon_info); - if (icon == NULL) goto loser; - - rest_pixbuf = gdk_pixbuf_new_from_file (icon, NULL); - gtk_icon_info_free (icon_info); - icon_info = NULL; - - if (rest_pixbuf == NULL) - { - g_warning ("Could not load spinner rest icon"); - goto loser; - } - - if (size > requested_size) - { - rest_pixbuf = scale_to_size (rest_pixbuf, isw, ish); - } - - /* Load the animation */ + /* Load the animation. The 'rest icon' is the 0th frame */ icon_info = gtk_icon_theme_lookup_icon (icon_theme, SPINNER_ICON_NAME, requested_size, 0); if (icon_info == NULL) { g_warning ("Throbber animation not found"); - goto loser; + + /* If the icon naming spec compliant name wasn't found, try the old name */ + icon_info = gtk_icon_theme_lookup_icon (icon_theme, + SPINNER_FALLBAC_ICON_NAME, + requested_size, 0); + if (icon_info == NULL) + { + g_warning ("Throbber fallback animation not found either"); + goto loser; + } } + g_assert (icon_info != NULL); size = gtk_icon_info_get_base_size (icon_info); icon = gtk_icon_info_get_filename (icon_info); @@ -344,13 +321,13 @@ ephy_spinner_images_load (GdkScreen *screen, images->size = icon_size; images->width = images->height = requested_size; - images->quiescent_pixbuf = rest_pixbuf; images->n_animation_pixbufs = n; images->animation_pixbufs = g_new (GdkPixbuf *, n); for (l = list; l != NULL; l = l->next) { + g_assert (l->data != NULL); images->animation_pixbufs[--n] = l->data; } g_assert (n == 0); @@ -366,10 +343,6 @@ loser: { gtk_icon_info_free (icon_info); } - if (rest_pixbuf) - { - g_object_unref (rest_pixbuf); - } g_slist_foreach (list, (GFunc) g_object_unref, NULL); STOP_PROFILER ("loading spinner animation") @@ -591,7 +564,7 @@ ephy_spinner_load_images (EphySpinner *spinner) STOP_PROFILER ("ephy_spinner_load_images") - details->current_image = 0; + details->current_image = 0; /* 'rest' icon */ details->need_load = FALSE; } @@ -666,23 +639,15 @@ ephy_spinner_expose (GtkWidget *widget, return FALSE; } - if (details->spinning && - images->n_animation_pixbufs > 0) - { - g_assert (details->current_image >= 0 && - details->current_image < images->n_animation_pixbufs); + /* Otherwise |images| will be NULL anyway */ + g_assert (images->n_animation_pixbufs > 0); + + g_assert (details->current_image >= 0 && + details->current_image < images->n_animation_pixbufs); - pixbuf = images->animation_pixbufs[details->current_image]; - } - else - { - pixbuf = images->quiescent_pixbuf; - } + pixbuf = images->animation_pixbufs[details->current_image]; - if (pixbuf == NULL) - { - return FALSE; - } + g_assert (pixbuf != NULL); width = gdk_pixbuf_get_width (pixbuf); height = gdk_pixbuf_get_height (pixbuf); @@ -727,7 +692,8 @@ bump_spinner_frame_cb (EphySpinner *spinner) details->current_image++; if (details->current_image >= details->images->n_animation_pixbufs) { - details->current_image = 0; + /* the 0th frame is the 'rest' icon */ + details->current_image = MIN (1, details->images->n_animation_pixbufs); } gtk_widget_queue_draw (GTK_WIDGET (spinner)); @@ -753,7 +719,8 @@ ephy_spinner_start (EphySpinner *spinner) details->timer_task == 0 && ephy_spinner_load_images (spinner)) { - details->current_image = 0; + /* the 0th frame is the 'rest' icon */ + details->current_image = MIN (1, details->images->n_animation_pixbufs); details->timer_task = g_timeout_add_full (G_PRIORITY_LOW, @@ -788,6 +755,7 @@ ephy_spinner_stop (EphySpinner *spinner) EphySpinnerDetails *details = spinner->details; details->spinning = FALSE; + details->current_image = 0; if (details->timer_task != 0) { diff --git a/m4/gecko.m4 b/m4/gecko.m4 index cefb65215..506698ad0 100644 --- a/m4/gecko.m4 +++ b/m4/gecko.m4 @@ -324,16 +324,19 @@ $1[]_VERSION_INT=$gecko_cv_gecko_version_int # ************************************************** gecko_cv_extra_libs= +gecko_cv_glue_libs= gecko_cv_extra_pkg_dependencies= if test "$gecko_cv_gecko_version_int" -ge "1009000"; then - gecko_cv_extra_libs="-L$_GECKO_LIBDIR -lxul -lxpcomglue_s" + gecko_cv_extra_libs="-L$_GECKO_LIBDIR -lxul" + gecko_cv_glue_libs="-L$_GECKO_LIBDIR -lxpcomglue_s" else gecko_cv_extra_pkg_dependencies="${gecko_cv_gecko}-gtkmozembed" fi $1[]_EXTRA_PKG_DEPENDENCIES="$gecko_cv_extra_pkg_dependencies" $1[]_EXTRA_LIBS="$gecko_cv_extra_libs" +$1[]_GLUE_LIBS="$gecko_cv_glue_libs" ]) diff --git a/src/ephy-statusbar.c b/src/ephy-statusbar.c index 89e600e91..e5ed179e7 100755 --- a/src/ephy-statusbar.c +++ b/src/ephy-statusbar.c @@ -92,6 +92,7 @@ ephy_statusbar_get_type (void) return type; } +/* FIXME: remove this hack once gtk bug #372452 is fixed! */ static void ephy_statusbar_size_allocate (GtkWidget *widget, GtkAllocation *allocation) diff --git a/src/popup-commands.c b/src/popup-commands.c index d101a892d..7043f6496 100644 --- a/src/popup-commands.c +++ b/src/popup-commands.c @@ -451,6 +451,7 @@ popup_cmd_open_image (GtkAction *action, address = g_value_get_string (value); scheme = gnome_vfs_get_uri_scheme (address); + if (scheme == NULL) return; if (strcmp (scheme, "file") == 0) { |