Build fixes for OpenGL support in wxGTK with Wayland

Don't try using X-specific symbols when GDK_WINDOWING_X11 is off.

Closes https://github.com/wxWidgets/wxWidgets/pull/2191
This commit is contained in:
Hiroshi Takey F. (hiro2233)
2021-01-31 18:11:29 -04:00
committed by Vadim Zeitlin
parent 7856a385d1
commit 7e4865c7c1
4 changed files with 21 additions and 8 deletions

View File

@@ -175,7 +175,7 @@ bool wxDisplayImplGTK::ChangeMode(const wxVideoMode& WXUNUSED(mode))
#else // !__WXGTK4__ #else // !__WXGTK4__
#ifdef __WXGTK3__ #if defined(__WXGTK3__) && defined(GDK_WINDOWING_X11)
static inline bool wxIsX11GDKScreen(GdkScreen* screen) static inline bool wxIsX11GDKScreen(GdkScreen* screen)
{ {

View File

@@ -260,8 +260,12 @@ bool wxGLCanvas::SetBackgroundStyle(wxBackgroundStyle /* style */)
unsigned long wxGLCanvas::GetXWindow() const unsigned long wxGLCanvas::GetXWindow() const
{ {
#if defined(GDK_WINDOWING_X11)
GdkWindow* window = GTKGetDrawingWindow(); GdkWindow* window = GTKGetDrawingWindow();
return window ? GDK_WINDOW_XID(window) : 0; return window ? GDK_WINDOW_XID(window) : 0;
#else
return 0;
#endif
} }
void wxGLCanvas::GTKHandleRealized() void wxGLCanvas::GTKHandleRealized()

View File

@@ -2460,7 +2460,7 @@ wxWindow *wxGetActiveWindow()
// Under Unix this is implemented using X11 functions in utilsx11.cpp but we // Under Unix this is implemented using X11 functions in utilsx11.cpp but we
// need to have this function under Windows too, so provide at least a stub. // need to have this function under Windows too, so provide at least a stub.
#ifndef GDK_WINDOWING_X11 #ifdef GDK_WINDOWING_WIN32
bool wxGetKeyState(wxKeyCode WXUNUSED(key)) bool wxGetKeyState(wxKeyCode WXUNUSED(key))
{ {
wxFAIL_MSG(wxS("Not implemented under Windows")); wxFAIL_MSG(wxS("Not implemented under Windows"));

View File

@@ -50,6 +50,12 @@ GdkWindow* wxGetTopLevelGDK();
GtkWidget* wxGetTopLevelGTK(); GtkWidget* wxGetTopLevelGTK();
#endif #endif
#ifdef GTK_CHECK_VERSION
#if GTK_CHECK_VERSION(3,4,0)
#define wxHAS_GETKEYSTATE_GTK
#endif //GTK+ 3.4
#endif
// Only X11 backend is supported for wxGTK here (GTK < 2 has no others) // Only X11 backend is supported for wxGTK here (GTK < 2 has no others)
#if !defined(__WXGTK__) || \ #if !defined(__WXGTK__) || \
(!defined(__WXGTK20__) || defined(GDK_WINDOWING_X11)) (!defined(__WXGTK20__) || defined(GDK_WINDOWING_X11))
@@ -2544,6 +2550,7 @@ int wxUnicodeCharXToWX(WXKeySym keySym)
// check current state of a key // check current state of a key
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
#ifndef wxHAS_GETKEYSTATE_GTK
static bool wxGetKeyStateX11(wxKeyCode key) static bool wxGetKeyStateX11(wxKeyCode key)
{ {
wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key != wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key !=
@@ -2588,6 +2595,7 @@ static bool wxGetKeyStateX11(wxKeyCode key)
XQueryKeymap(pDisplay, key_vector); XQueryKeymap(pDisplay, key_vector);
return (key_vector[keyCode >> 3] & (1 << (keyCode & 7))) != 0; return (key_vector[keyCode >> 3] & (1 << (keyCode & 7))) != 0;
} }
#endif
#endif // !defined(__WXGTK__) || defined(GDK_WINDOWING_X11) #endif // !defined(__WXGTK__) || defined(GDK_WINDOWING_X11)
@@ -2596,9 +2604,8 @@ static bool wxGetKeyStateX11(wxKeyCode key)
#ifdef __WXGTK__ #ifdef __WXGTK__
// gdk_keymap_get_modifier_state() is only available since 3.4 // gdk_keymap_get_modifier_state() is only available since 3.4
#if GTK_CHECK_VERSION(3,4,0)
#define wxHAS_GETKEYSTATE_GTK #ifdef wxHAS_GETKEYSTATE_GTK
static bool wxGetKeyStateGTK(wxKeyCode key) static bool wxGetKeyStateGTK(wxKeyCode key)
{ {
@@ -2629,22 +2636,24 @@ static bool wxGetKeyStateGTK(wxKeyCode key)
} }
return (state & mask) != 0; return (state & mask) != 0;
} }
#endif // wxHAS_GETKEYSTATE_GTK
#endif // GTK+ 3.4
#endif // __WXGTK__ #endif // __WXGTK__
bool wxGetKeyState(wxKeyCode key) bool wxGetKeyState(wxKeyCode key)
{ {
#ifdef wxHAS_GETKEYSTATE_GTK #ifdef wxHAS_GETKEYSTATE_GTK
bool ret = false;
GdkDisplay* display = gdk_window_get_display(wxGetTopLevelGDK()); GdkDisplay* display = gdk_window_get_display(wxGetTopLevelGDK());
const char* name = g_type_name(G_TYPE_FROM_INSTANCE(display)); const char* name = g_type_name(G_TYPE_FROM_INSTANCE(display));
if (strcmp(name, "GdkX11Display") != 0) if (strcmp(name, "GdkX11Display") != 0)
{ {
return wxGetKeyStateGTK(key); ret = wxGetKeyStateGTK(key);
} }
#endif // GTK+ 3.4+ return ret;
#else
return wxGetKeyStateX11(key); return wxGetKeyStateX11(key);
#endif // GTK+ 3.4+
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------