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