+Thu Aug 25 23:40:23 2005 Jonathan Blandford <jrb@redhat.com>
+
+ * configure.ac: catch another gtk+-2.8ism
+ * shell/main.c: Make work with gtk+-2.6
+ * NEWS: Release 0.4.0
+
2005-08-25 Ryan Lortie <desrt@desrt.ca>
* shell/ev-application-service.xml: Add 'timestamp' argument to
Evince 0.3.4
==============
+Bug Fixes:
+
+ * Depend on poppler 0.4.0
+ * Pass in timestamp to to handle opening multiple windows over dbus
+ better (Ryan Lortie)
+ * Really quit when rendering postscript files.
+ * Set textdomain to libglade.
+ * Fix rotation of thumbnails multiple times
+ * Fix selection for non-continuous case
+ * Disable selection for rotated case
+ * findbar fixes
+
+==============
+Evince 0.3.4
+==============
+
Bug Fixes:
* Depend on poppler 0.4.0
New features
- * Use page labels as page numbers (Jhonatan)
+ * Use page labels as page numbers (Jonathan)
==============
Evince 0.1.9
evince_save_LIBS=$LIBS
LIBS="$LIBS $FRONTEND_CORE_LIBS"
AC_CHECK_FUNCS(gtk_icon_view_get_visible_range)
+AC_CHECK_FUNCS(gtk_window_present_with_time)
AC_CHECK_FUNCS(g_file_set_contents)
LIBS=$evince_save_LIBS
GtkWidget *new_window = ev_window_new ();
gtk_widget_show (new_window);
+
+#ifdef HAVE_GTK_WINDOW_PRESENT_WITH_TIME
gtk_window_present_with_time (GTK_WINDOW (new_window),
timestamp);
+#else
+ gtk_window_present (GTK_WINDOW (new_window));
+#endif
return TRUE;
}
ev_pixbuf_cache_clear (view->pixbuf_cache);
gtk_widget_queue_resize (GTK_WIDGET (view));
}
-
+
+ if (rotation != 0)
+ clear_selection (view);
+
g_object_notify (G_OBJECT (view), "rotation");
}
{
int n_pages, i;
+ /* Disable selection on rotated pages for the 0.4.0 series */
+ if (view->rotation != 0)
+ return;
+
clear_selection (view);
n_pages = ev_page_cache_get_n_pages (view->page_cache);
}
#ifdef ENABLE_DBUS
+
+#ifndef HAVE_GTK_WINDOW_PRESENT_WITH_TIME
+static guint32
+get_startup_time (void)
+{
+ const char *envvar, *timestamp;
+ unsigned long value;
+ char *end;
+
+ envvar = getenv ("DESKTOP_STARTUP_ID");
+
+ if (envvar == NULL)
+ return 0;
+
+/* DESKTOP_STARTUP_ID is of form "<unique>_TIME<timestamp>".
+ *
+ * <unique> might contain a T but <timestamp> is an integer. As such,
+ * the last 'T' in the string must be the start of "TIME".
+ */
+ timestamp = rindex (envvar, 'T');
+
+/* Maybe the word "TIME" was not found... */
+ if (timestamp == NULL || strncmp (timestamp, "TIME", 4))
+ return 0;
+
+ timestamp += 4;
+
+/* strtoul sets errno = ERANGE on overflow, but it is not specified
+ * if it sets it to 0 on success. Doing so ourselves is the only
+ * way to know for sure.
+ */
+ errno = 0;
+ value = strtoul (timestamp, &end, 10);
+
+/* unsigned long might be 64bit, so double-check! */
+ if (errno != 0 || *end != '\0' || value > G_MAXINT32)
+ return 0;
+
+ return value;
+}
+#endif
+
static gboolean
load_files_remote (const char **files)
{
GdkDisplay *display;
guint32 timestamp;
+#ifdef HAVE_GTK_WINDOW_PRESENT_WITH_TIME
display = gdk_display_get_default();
timestamp = gdk_x11_display_get_user_time (display);
-
+#else
+ /* Fake it for GTK+2.6 */
+ timestamp = get_startup_time ();
+#endif
connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
if (connection == NULL) {
g_warning (error->message);