]> www.fi.muni.cz Git - evince.git/commitdiff
catch another gtk+-2.8ism Make work with gtk+-2.6 Release 0.4.0
authorJonathan Blandford <jrb@redhat.com>
Fri, 26 Aug 2005 04:25:42 +0000 (04:25 +0000)
committerJonathan Blandford <jrb@src.gnome.org>
Fri, 26 Aug 2005 04:25:42 +0000 (04:25 +0000)
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

ChangeLog
NEWS
configure.ac
shell/ev-application.c
shell/ev-view.c
shell/main.c

index 187b1772b3f791a8032463b1bcaca2bb69e799d4..d567dae3140cf8bc24a728bc8c8d47087644e7de 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+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
diff --git a/NEWS b/NEWS
index dcfb921e9a4be2a432a03b5cc6ff5f2097e8448e..77e79cae180764976ed0e05c3ac9724189f341f7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,22 @@
 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
@@ -194,7 +210,7 @@ Interface improvements
 
 New features
 
-       * Use page labels as page numbers (Jhonatan)
+       * Use page labels as page numbers (Jonathan)
 
 ==============
 Evince   0.1.9
index 0b79bfbb74fb3dbed72cd877956ee81a83ffc295..0f298da141cee21ed67e43571d01d98acd724ef1 100644 (file)
@@ -118,6 +118,7 @@ dnl Check for functions not present in gtk 2.6
 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
 
index ea66f659ed8e3d553e46edc0199ec6a256812be5..d9b5ab0dab00f53ff08b8c9706083d25debf80b5 100644 (file)
@@ -119,8 +119,13 @@ ev_application_open_window (EvApplication  *application,
        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;
 }
index a59b64abcc940ac6ab911562a024fa942e783e2a..05d3954256add7a27a41fa06d7e9099a20207b15 100644 (file)
@@ -2456,7 +2456,10 @@ ev_view_set_rotation (EvView *view, int rotation)
                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");
 }
 
@@ -3215,6 +3218,10 @@ ev_view_select_all (EvView *view)
 {
        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);
index 9b38ee6bbf9851de9555456567f8aa19f6b0388a..33cb14ec6446a0a07ceebfe887c65ffe0804c88c 100644 (file)
@@ -70,6 +70,48 @@ load_files (const char **files)
 }
 
 #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)
 {
@@ -84,9 +126,13 @@ 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);