summaryrefslogtreecommitdiff
path: root/gtk/gtkclipboard.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2011-04-07 20:19:30 +0200
committerAlexander Larsson <alexl@redhat.com>2011-04-07 20:19:30 +0200
commit9db4accf9c30e29979e3e012f0a8b3ef624bb690 (patch)
tree3cb71357c7d0535d6ccca119fa8d4f3bbe09cf97 /gtk/gtkclipboard.c
parentd12a9a5e990631053a39dd417aab21be3a6ff1cf (diff)
downloadgtk+-9db4accf9c30e29979e3e012f0a8b3ef624bb690.tar.gz
Make gtkclipboard.c:clipboard_get_timestamp multi-backend safe
We can't just check for the backend defines, we have to do runtime checks too.
Diffstat (limited to 'gtk/gtkclipboard.c')
-rw-r--r--gtk/gtkclipboard.c31
1 files changed, 28 insertions, 3 deletions
diff --git a/gtk/gtkclipboard.c b/gtk/gtkclipboard.c
index e918495ffc..5dc09e59e8 100644
--- a/gtk/gtkclipboard.c
+++ b/gtk/gtkclipboard.c
@@ -34,6 +34,10 @@
#include "x11/gdkx.h"
#endif
+#ifdef GDK_WINDOWING_BROADWAY
+#include "broadway/gdkbroadway.h"
+#endif
+
#ifdef GDK_WINDOWING_WIN32
#include "win32/gdkwin32.h"
#endif
@@ -412,14 +416,35 @@ clipboard_get_timestamp (GtkClipboard *clipboard)
{
GtkWidget *clipboard_widget = get_clipboard_widget (clipboard->display);
guint32 timestamp = gtk_get_current_event_time ();
+ GdkWindow *window;
if (timestamp == GDK_CURRENT_TIME)
{
+ window = gtk_widget_get_window (clipboard_widget);
#ifdef GDK_WINDOWING_X11
- timestamp = gdk_x11_get_server_time (gtk_widget_get_window (clipboard_widget));
-#elif defined GDK_WINDOWING_WIN32
- timestamp = GetMessageTime ();
+ if (GDK_IS_X11_WINDOW (window))
+ {
+ timestamp = gdk_x11_get_server_time (gtk_widget_get_window (clipboard_widget));
+ }
+ else
#endif
+#if defined GDK_WINDOWING_WIN32
+ if (GDK_IS_WIN32_WINDOW (window))
+ {
+ timestamp = GetMessageTime ();
+ }
+ else
+#endif
+#if defined GDK_WINDOWING_BROADWAY
+ if (GDK_IS_BROADWAY_WINDOW (window))
+ {
+ timestamp = gdk_broadway_get_last_seen_time (window);
+ }
+ else
+#endif
+ {
+ /* No implementation */
+ }
}
else
{