Fix wxGTK compilation when using non X11-based GDK.
Only use X11-specific GDK functions inside "#ifdef GDK_WINDOWING_X11" checks. Closes #14044. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70701 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -38,7 +38,9 @@
|
||||
#include <hildon/hildon.h>
|
||||
#endif // wxUSE_LIBHILDON2
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
#include <gdk/gdkx.h>
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// link GnomeVFS
|
||||
|
@@ -14,7 +14,9 @@
|
||||
#include "wx/gtk/dcscreen.h"
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
#include <gdk/gdkx.h>
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxScreenDCImpl
|
||||
|
@@ -116,6 +116,7 @@ status_icon_popup_menu(GtkStatusIcon*, guint, guint, wxTaskBarIcon* taskBarIcon)
|
||||
|
||||
bool wxTaskBarIconBase::IsAvailable()
|
||||
{
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
char name[32];
|
||||
g_snprintf(name, sizeof(name), "_NET_SYSTEM_TRAY_S%d",
|
||||
gdk_x11_get_default_screen());
|
||||
@@ -124,6 +125,9 @@ bool wxTaskBarIconBase::IsAvailable()
|
||||
Window manager = XGetSelectionOwner(gdk_x11_get_default_xdisplay(), atom);
|
||||
|
||||
return manager != None;
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
@@ -36,15 +36,21 @@
|
||||
#include "wx/sysopt.h"
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
#include <gdk/gdkx.h>
|
||||
#endif
|
||||
|
||||
#include "wx/gtk/private/win_gtk.h"
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
|
||||
#include "wx/unix/utilsx11.h"
|
||||
|
||||
// XA_CARDINAL
|
||||
#include <X11/Xatom.h>
|
||||
|
||||
#endif // GDK_WINDOWING_X11
|
||||
|
||||
#if wxUSE_LIBHILDON
|
||||
#include <hildon-widgets/hildon-program.h>
|
||||
#include <hildon-widgets/hildon-window.h>
|
||||
@@ -90,6 +96,7 @@ static void wxgtk_window_set_urgency_hint (GtkWindow *win,
|
||||
else
|
||||
#endif
|
||||
{
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(win));
|
||||
wxCHECK_RET(window, "wxgtk_window_set_urgency_hint: GdkWindow not realized");
|
||||
|
||||
@@ -107,6 +114,7 @@ static void wxgtk_window_set_urgency_hint (GtkWindow *win,
|
||||
|
||||
XSetWMHints(dpy, xid, wm_hints);
|
||||
XFree(wm_hints);
|
||||
#endif // GDK_WINDOWING_X11
|
||||
}
|
||||
}
|
||||
#define gtk_window_set_urgency_hint wxgtk_window_set_urgency_hint
|
||||
@@ -399,6 +407,7 @@ gtk_frame_window_state_callback( GtkWidget* WXUNUSED(widget),
|
||||
|
||||
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);
|
||||
Atom xproperty = gdk_x11_atom_to_xatom_for_display(
|
||||
gdk_drawable_get_display(window), property);
|
||||
@@ -424,6 +433,9 @@ bool wxGetFrameExtents(GdkWindow* window, int* left, int* right, int* top, int*
|
||||
if (data)
|
||||
XFree(data);
|
||||
return success;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -758,6 +770,7 @@ bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long)
|
||||
|
||||
m_fsIsShowing = show;
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
wxX11FullScreenMethod method =
|
||||
wxGetFullScreenMethodX11((WXDisplay*)GDK_DISPLAY(),
|
||||
(WXWindow)GDK_ROOT_WINDOW());
|
||||
@@ -767,12 +780,14 @@ bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long)
|
||||
// check if WM supports the spec and use legacy methods if it
|
||||
// doesn't.
|
||||
if ( method == wxX11_FS_WMSPEC )
|
||||
#endif // GDK_WINDOWING_X11
|
||||
{
|
||||
if (show)
|
||||
gtk_window_fullscreen( GTK_WINDOW( m_widget ) );
|
||||
else
|
||||
gtk_window_unfullscreen( GTK_WINDOW( m_widget ) );
|
||||
}
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
else
|
||||
{
|
||||
GdkWindow* window = gtk_widget_get_window(m_widget);
|
||||
@@ -821,6 +836,7 @@ bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long)
|
||||
m_fsSaveFrame.width, m_fsSaveFrame.height);
|
||||
}
|
||||
}
|
||||
#endif // GDK_WINDOWING_X11
|
||||
|
||||
// documented behaviour is to show the window if it's still hidden when
|
||||
// showing it full screen
|
||||
@@ -866,9 +882,13 @@ bool wxTopLevelWindowGTK::Show( bool show )
|
||||
GdkScreen* screen = NULL;
|
||||
if (deferShow)
|
||||
{
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
screen = gtk_widget_get_screen(m_widget);
|
||||
GdkAtom atom = gdk_atom_intern("_NET_REQUEST_FRAME_EXTENTS", false);
|
||||
deferShow = gdk_x11_screen_supports_net_wm_hint(screen, atom) != 0;
|
||||
#else
|
||||
deferShow = false;
|
||||
#endif
|
||||
// If _NET_REQUEST_FRAME_EXTENTS not supported, don't allow changes
|
||||
// to m_decorSize, it breaks saving/restoring window size with
|
||||
// GetSize()/SetSize() because it makes window bigger between each
|
||||
@@ -906,6 +926,7 @@ bool wxTopLevelWindowGTK::Show( bool show )
|
||||
gtk_widget_set_allocation(m_widget, &alloc);
|
||||
}
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
// send _NET_REQUEST_FRAME_EXTENTS
|
||||
XClientMessageEvent xevent;
|
||||
memset(&xevent, 0, sizeof(xevent));
|
||||
@@ -920,6 +941,7 @@ bool wxTopLevelWindowGTK::Show( bool show )
|
||||
XSendEvent(display, DefaultRootWindow(display), false,
|
||||
SubstructureNotifyMask | SubstructureRedirectMask,
|
||||
(XEvent*)&xevent);
|
||||
#endif // GDK_WINDOWING_X11
|
||||
|
||||
if (gs_requestFrameExtentsStatus == 0)
|
||||
{
|
||||
@@ -1377,6 +1399,7 @@ void wxTopLevelWindowGTK::SetWindowStyleFlag( long style )
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
/* Get the X Window between child and the root window.
|
||||
This should usually be the WM managed XID */
|
||||
static Window wxGetTopmostWindowX11(Display *dpy, Window child)
|
||||
@@ -1396,6 +1419,7 @@ static Window wxGetTopmostWindowX11(Display *dpy, Window child)
|
||||
|
||||
return child;
|
||||
}
|
||||
#endif // GDK_WINDOWING_X11
|
||||
|
||||
bool wxTopLevelWindowGTK::SetTransparent(wxByte alpha)
|
||||
{
|
||||
@@ -1405,6 +1429,7 @@ bool wxTopLevelWindowGTK::SetTransparent(wxByte alpha)
|
||||
if (window == NULL)
|
||||
return false;
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
Display* dpy = GDK_WINDOW_XDISPLAY(window);
|
||||
// We need to get the X Window that has the root window as the immediate parent
|
||||
// and m_widget->window as a child. This should be the X Window that the WM manages and
|
||||
@@ -1424,6 +1449,9 @@ bool wxTopLevelWindowGTK::SetTransparent(wxByte alpha)
|
||||
}
|
||||
XSync(dpy, False);
|
||||
return true;
|
||||
#else // !GDK_WINDOWING_X11
|
||||
return false;
|
||||
#endif // GDK_WINDOWING_X11 / !GDK_WINDOWING_X11
|
||||
}
|
||||
|
||||
bool wxTopLevelWindowGTK::CanSetTransparent()
|
||||
|
@@ -27,7 +27,12 @@
|
||||
#include "wx/evtloop.h"
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#ifdef GDK_WINDOWING_WIN32
|
||||
#include <gdk/gdkwin32.h>
|
||||
#endif
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
#include <gdk/gdkx.h>
|
||||
#endif
|
||||
|
||||
#if wxDEBUG_LEVEL
|
||||
#include "wx/gtk/assertdlg_gtk.h"
|
||||
|
@@ -41,7 +41,11 @@
|
||||
#include "wx/gtk/private/event.h"
|
||||
using namespace wxGTKImpl;
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
#include <gdk/gdkx.h>
|
||||
#else
|
||||
typedef guint KeySym;
|
||||
#endif
|
||||
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#if GTK_CHECK_VERSION(3,0,0)
|
||||
@@ -728,6 +732,7 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event,
|
||||
keysym = (KeySym)gdk_event->string[0];
|
||||
}
|
||||
|
||||
#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
|
||||
@@ -746,6 +751,9 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event,
|
||||
// use the normalized, i.e. lower register, keysym if we've
|
||||
// got one
|
||||
key_code = keysymNormalized ? keysymNormalized : keysym;
|
||||
#else
|
||||
key_code = keysym;
|
||||
#endif
|
||||
|
||||
// as explained above, we want to have lower register key codes
|
||||
// normally but for the letter keys we want to have the upper ones
|
||||
@@ -3579,11 +3587,13 @@ void wxWindowGTK::WarpPointer( int x, int y )
|
||||
GdkDeviceManager* manager = gdk_display_get_device_manager(display);
|
||||
gdk_device_warp(gdk_device_manager_get_client_pointer(manager), screen, x, y);
|
||||
#else
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
XWarpPointer(GDK_DISPLAY_XDISPLAY(display),
|
||||
None,
|
||||
GDK_WINDOW_XID(gdk_screen_get_root_window(screen)),
|
||||
0, 0, 0, 0, x, y);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
wxWindowGTK::ScrollDir wxWindowGTK::ScrollDirFromRange(GtkRange *range) const
|
||||
@@ -4088,7 +4098,7 @@ bool wxWindowGTK::SetBackgroundStyle(wxBackgroundStyle style)
|
||||
{
|
||||
// Make sure GDK/X11 doesn't refresh the window
|
||||
// automatically.
|
||||
gdk_window_set_back_pixmap( window, None, False );
|
||||
gdk_window_set_back_pixmap( window, NULL, FALSE );
|
||||
m_needsStyleChange = false;
|
||||
}
|
||||
else // window not realized yet
|
||||
|
Reference in New Issue
Block a user