Jeremy Newton 63d23b2
diff -rupN wxWidgets-3.0.2/src/gtk/toplevel.cpp wxWidgets-3.0.2-wayland/src/gtk/toplevel.cpp
Jeremy Newton 63d23b2
--- wxWidgets-3.0.2/src/gtk/toplevel.cpp	2014-10-06 17:33:44.000000000 -0400
Jeremy Newton 63d23b2
+++ wxWidgets-3.0.2-wayland/src/gtk/toplevel.cpp	2015-12-31 14:48:25.873812357 -0500
Jeremy Newton 63d23b2
@@ -456,8 +456,12 @@ gtk_frame_window_state_callback( GtkWidg
Jeremy Newton 63d23b2
 bool wxGetFrameExtents(GdkWindow* window, int* left, int* right, int* top, int* bottom)
Jeremy Newton 63d23b2
 {
Jeremy Newton 63d23b2
 #ifdef GDK_WINDOWING_X11
Jeremy Newton 63d23b2
-    static GdkAtom property = gdk_atom_intern("_NET_FRAME_EXTENTS", false);
Jeremy Newton 63d23b2
     GdkDisplay* display = gdk_window_get_display(window);
Jeremy Newton 63d23b2
+
Jeremy Newton 63d23b2
+    if (!GDK_IS_X11_DISPLAY(display))
Jeremy Newton 63d23b2
+        return false;
Jeremy Newton 63d23b2
+
Jeremy Newton 63d23b2
+    static GdkAtom property = gdk_atom_intern("_NET_FRAME_EXTENTS", false);
Jeremy Newton 63d23b2
     Atom xproperty = gdk_x11_atom_to_xatom_for_display(display, property);
Jeremy Newton 63d23b2
     Atom type;
Jeremy Newton 63d23b2
     int format;
Jeremy Newton 63d23b2
@@ -852,10 +856,19 @@ bool wxTopLevelWindowGTK::ShowFullScreen
Jeremy Newton 63d23b2
 
Jeremy Newton 63d23b2
     m_fsIsShowing = show;
Jeremy Newton 63d23b2
 
Jeremy Newton 63d23b2
+    wxX11FullScreenMethod method = wxX11_FS_WMSPEC;
Jeremy Newton 63d23b2
+    Display* xdpy = NULL;
Jeremy Newton 63d23b2
+    Window xroot = None;
Jeremy Newton 63d23b2
+
Jeremy Newton 63d23b2
 #ifdef GDK_WINDOWING_X11
Jeremy Newton 63d23b2
-    Display* xdpy = GDK_DISPLAY_XDISPLAY(gtk_widget_get_display(m_widget));
Jeremy Newton 63d23b2
-    Window xroot = GDK_WINDOW_XID(gtk_widget_get_root_window(m_widget));
Jeremy Newton 63d23b2
-    wxX11FullScreenMethod method = wxGetFullScreenMethodX11(xdpy, (WXWindow)xroot);
Jeremy Newton 63d23b2
+    GdkDisplay *display = gtk_widget_get_display(m_widget);
Jeremy Newton 63d23b2
+
Jeremy Newton 63d23b2
+    if (GDK_IS_X11_DISPLAY(display))
Jeremy Newton 63d23b2
+    {
Jeremy Newton 63d23b2
+        xdpy = GDK_DISPLAY_XDISPLAY(gtk_widget_get_display(m_widget));
Jeremy Newton 63d23b2
+        xroot = GDK_WINDOW_XID(gtk_widget_get_root_window(m_widget));
Jeremy Newton 63d23b2
+        method = wxGetFullScreenMethodX11(xdpy, (WXWindow)xroot);
Jeremy Newton 63d23b2
+    }
Jeremy Newton 63d23b2
 
Jeremy Newton 63d23b2
     // NB: gtk_window_fullscreen() uses freedesktop.org's WMspec extensions
Jeremy Newton 63d23b2
     //     to switch to fullscreen, which is not always available. We must
Jeremy Newton 63d23b2
@@ -870,7 +883,7 @@ bool wxTopLevelWindowGTK::ShowFullScreen
Jeremy Newton 63d23b2
             gtk_window_unfullscreen( GTK_WINDOW( m_widget ) );
Jeremy Newton 63d23b2
     }
Jeremy Newton 63d23b2
 #ifdef GDK_WINDOWING_X11
Jeremy Newton 63d23b2
-    else
Jeremy Newton 63d23b2
+    else if (xdpy != NULL)
Jeremy Newton 63d23b2
     {
Jeremy Newton 63d23b2
         GdkWindow* window = gtk_widget_get_window(m_widget);
Jeremy Newton 63d23b2
         Window xid = GDK_WINDOW_XID(window);
Jeremy Newton 63d23b2
@@ -958,6 +971,7 @@ bool wxTopLevelWindowGTK::Show( bool sho
Jeremy Newton 63d23b2
         deferShow = m_deferShowAllowed &&
Jeremy Newton 63d23b2
             gs_requestFrameExtentsStatus != RFE_STATUS_BROKEN &&
Jeremy Newton 63d23b2
             !gtk_widget_get_realized(m_widget) &&
Jeremy Newton 63d23b2
+            GDK_IS_X11_DISPLAY(gtk_widget_get_display(m_widget)) &&
Jeremy Newton 63d23b2
             g_signal_handler_find(m_widget,
Jeremy Newton 63d23b2
                 GSignalMatchType(G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DATA),
Jeremy Newton 63d23b2
                 g_signal_lookup("property_notify_event", GTK_TYPE_WIDGET),
Jeremy Newton 63d23b2
diff -rupN wxWidgets-3.0.2/src/gtk/window.cpp wxWidgets-3.0.2-wayland/src/gtk/window.cpp
Jeremy Newton 63d23b2
--- wxWidgets-3.0.2/src/gtk/window.cpp	2014-10-06 17:33:44.000000000 -0400
Jeremy Newton 63d23b2
+++ wxWidgets-3.0.2-wayland/src/gtk/window.cpp	2015-12-31 14:48:31.522812743 -0500
Jeremy Newton 63d23b2
@@ -780,28 +780,31 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& e
Jeremy Newton 63d23b2
             }
Jeremy Newton 63d23b2
 
Jeremy Newton 63d23b2
 #ifdef GDK_WINDOWING_X11
Jeremy Newton 63d23b2
-            // we want to always get the same key code when the same key is
Jeremy Newton 63d23b2
-            // pressed regardless of the state of the modifiers, i.e. on a
Jeremy Newton 63d23b2
-            // standard US keyboard pressing '5' or '%' ('5' key with
Jeremy Newton 63d23b2
-            // Shift) should result in the same key code in OnKeyDown():
Jeremy Newton 63d23b2
-            // '5' (although OnChar() will get either '5' or '%').
Jeremy Newton 63d23b2
-            //
Jeremy Newton 63d23b2
-            // to do it we first translate keysym to keycode (== scan code)
Jeremy Newton 63d23b2
-            // and then back but always using the lower register
Jeremy Newton 63d23b2
-            Display *dpy = (Display *)wxGetDisplay();
Jeremy Newton 63d23b2
-            KeyCode keycode = XKeysymToKeycode(dpy, keysym);
Jeremy Newton 63d23b2
+            if (GDK_IS_X11_DISPLAY(gdk_window_get_display(gdk_event->window)))
Jeremy Newton 63d23b2
+            {
Jeremy Newton 63d23b2
+                // we want to always get the same key code when the same key is
Jeremy Newton 63d23b2
+                // pressed regardless of the state of the modifiers, i.e. on a
Jeremy Newton 63d23b2
+                // standard US keyboard pressing '5' or '%' ('5' key with
Jeremy Newton 63d23b2
+                // Shift) should result in the same key code in OnKeyDown():
Jeremy Newton 63d23b2
+                // '5' (although OnChar() will get either '5' or '%').
Jeremy Newton 63d23b2
+                //
Jeremy Newton 63d23b2
+                // to do it we first translate keysym to keycode (== scan code)
Jeremy Newton 63d23b2
+                // and then back but always using the lower register
Jeremy Newton 63d23b2
+                Display *dpy = (Display *)wxGetDisplay();
Jeremy Newton 63d23b2
+                KeyCode keycode = XKeysymToKeycode(dpy, keysym);
Jeremy Newton 63d23b2
 
Jeremy Newton 63d23b2
-            wxLogTrace(TRACE_KEYS, wxT("\t-> keycode %d"), keycode);
Jeremy Newton 63d23b2
+                wxLogTrace(TRACE_KEYS, wxT("\t-> keycode %d"), keycode);
Jeremy Newton 63d23b2
 
Jeremy Newton 63d23b2
 #ifdef HAVE_X11_XKBLIB_H
Jeremy Newton 63d23b2
-            KeySym keysymNormalized = XkbKeycodeToKeysym(dpy, keycode, 0, 0);
Jeremy Newton 63d23b2
+                KeySym keysymNormalized = XkbKeycodeToKeysym(dpy, keycode, 0, 0);
Jeremy Newton 63d23b2
 #else
Jeremy Newton 63d23b2
-            KeySym keysymNormalized = XKeycodeToKeysym(dpy, keycode, 0);
Jeremy Newton 63d23b2
+                KeySym keysymNormalized = XKeycodeToKeysym(dpy, keycode, 0);
Jeremy Newton 63d23b2
 #endif
Jeremy Newton 63d23b2
 
Jeremy Newton 63d23b2
-            // use the normalized, i.e. lower register, keysym if we've
Jeremy Newton 63d23b2
-            // got one
Jeremy Newton 63d23b2
-            key_code = keysymNormalized ? keysymNormalized : keysym;
Jeremy Newton 63d23b2
+                // use the normalized, i.e. lower register, keysym if we've
Jeremy Newton 63d23b2
+                // got one
Jeremy Newton 63d23b2
+                key_code = keysymNormalized ? keysymNormalized : keysym;
Jeremy Newton 63d23b2
+            }
Jeremy Newton 63d23b2
 #else
Jeremy Newton 63d23b2
             key_code = keysym;
Jeremy Newton 63d23b2
 #endif