Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
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 /shell
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
Diffstat (limited to 'shell')
-rw-r--r--shell/ev-application.c5
-rw-r--r--shell/ev-view.c9
-rw-r--r--shell/main.c48
3 files changed, 60 insertions, 2 deletions
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);