Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Blandford <jrb@redhat.com>2005-08-26 04:25:42 (GMT)
committer Jonathan Blandford <jrb@src.gnome.org>2005-08-26 04:25:42 (GMT)
commit08f59cdd977b86d17d0a9c70a56b2bfd7f6741a2 (patch)
tree83c5b6692bfb4ec0948514095aadb28afb102ee4
parent2eecd9167f17b9b0506675a9dc05dff487779afa (diff)
catch another gtk+-2.8ism Make work with gtk+-2.6 Release 0.4.0
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
-rw-r--r--ChangeLog6
-rw-r--r--NEWS18
-rw-r--r--configure.ac1
-rw-r--r--shell/ev-application.c5
-rw-r--r--shell/ev-view.c9
-rw-r--r--shell/main.c48
6 files changed, 84 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 187b177..d567dae 100644
--- 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 dcfb921..77e79ca 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,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
* Convert filenames to utf8 when showing them in the UI
* Return focus back to view on escape
* Fix compatibility with dbus 0.34.2
@@ -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
diff --git a/configure.ac b/configure.ac
index 0b79bfb..0f298da 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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
diff --git a/shell/ev-application.c b/shell/ev-application.c
index ea66f65..d9b5ab0 100644
--- a/shell/ev-application.c
+++ b/shell/ev-application.c
@@ -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;
}
diff --git a/shell/ev-view.c b/shell/ev-view.c
index a59b64a..05d3954 100644
--- a/shell/ev-view.c
+++ b/shell/ev-view.c
@@ -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);
diff --git a/shell/main.c b/shell/main.c
index 9b38ee6..33cb14e 100644
--- a/shell/main.c
+++ b/shell/main.c
@@ -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);