X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/acdc8633de4cad24bc971f3a3a0c3072fcc7f09a..8a31648287be0ef976f133de2786b137f1e98340:/src/gtk/utilsgtk.cpp diff --git a/src/gtk/utilsgtk.cpp b/src/gtk/utilsgtk.cpp index 93b8f02790..af080625e6 100644 --- a/src/gtk/utilsgtk.cpp +++ b/src/gtk/utilsgtk.cpp @@ -26,6 +26,9 @@ #include "wx/gtk/private/timer.h" #include "wx/evtloop.h" +#include +#include + #if wxDEBUG_LEVEL #include "wx/gtk/assertdlg_gtk.h" #if wxUSE_STACKWALKER @@ -40,14 +43,8 @@ #include // for WNOHANG #include -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "gdk/gdkx.h" - #if wxUSE_DETECT_SM - #include "X11/Xlib.h" - #include "X11/SM/SMlib.h" + #include #include "wx/unix/utilsx11.h" #endif @@ -93,7 +90,7 @@ void wxDisplaySizeMM( int *width, int *height ) void wxGetMousePosition( int* x, int* y ) { - gdk_window_get_pointer( NULL, x, y, NULL ); + gdk_window_get_pointer(gtk_widget_get_root_window(wxGetRootWindow()), x, y, NULL); } bool wxColourDisplay() @@ -103,7 +100,7 @@ bool wxColourDisplay() int wxDisplayDepth() { - return gdk_drawable_get_visual( wxGetRootWindow()->window )->depth; + return gtk_widget_get_visual(wxGetRootWindow())->depth; } wxWindow* wxFindWindowAtPoint(const wxPoint& pt) @@ -189,31 +186,28 @@ const gchar *wx_pango_version_check (int major, int minor, int micro) // ---------------------------------------------------------------------------- extern "C" { -static -void GTK_EndProcessDetector(gpointer data, gint source, - GdkInputCondition WXUNUSED(condition)) +static gboolean EndProcessDetector(GIOChannel* source, GIOCondition, void* data) { wxEndProcessData * const proc_data = static_cast(data); // child exited, end waiting - close(source); - - // don't call us again! - gdk_input_remove(proc_data->tag); + close(g_io_channel_unix_get_fd(source)); wxHandleProcessTermination(proc_data); + + // don't call us again! + return false; } } int wxGUIAppTraits::AddProcessCallback(wxEndProcessData *proc_data, int fd) { - int tag = gdk_input_add(fd, - GDK_INPUT_READ, - GTK_EndProcessDetector, - (gpointer)proc_data); - - return tag; + GIOChannel* channel = g_io_channel_unix_new(fd); + GIOCondition cond = GIOCondition(G_IO_IN | G_IO_HUP | G_IO_ERR); + unsigned id = g_io_add_watch(channel, cond, EndProcessDetector, proc_data); + g_io_channel_unref(channel); + return int(id); } @@ -331,14 +325,11 @@ private: GtkAssertDialog *m_dlg; }; -// the callback functions must be extern "C" to comply with GTK+ declarations -extern "C" +static void get_stackframe_callback(void* p) { - void get_stackframe_callback(StackDump *dump) - { - // skip over frames up to including wxOnAssert() - dump->ProcessFrames(3); - } + StackDump* dump = static_cast(p); + // skip over frames up to including wxOnAssert() + dump->ProcessFrames(3); } #endif // wxDEBUG_LEVEL && wxUSE_STACKWALKER @@ -365,7 +356,7 @@ bool wxGUIAppTraits::ShowAssertDialog(const wxString& msg) gtk_assert_dialog_set_backtrace_callback ( GTK_ASSERT_DIALOG(dialog), - (GtkAssertDialogStackFrameCallback)get_stackframe_callback, + get_stackframe_callback, &dump ); #endif // wxUSE_STACKWALKER @@ -475,11 +466,11 @@ wxGUIAppTraits::GetStandardCmdLineOptions(wxArrayString& names, { // since GTK>=2.6, we can use the glib_check_version() symbol... - // check whether GLib version is greater than 2.6 but also lower than 2.19 + // check whether GLib version is greater than 2.6 but also lower than 2.31 // because, as we use the undocumented _GOptionGroup struct, we don't want - // to run this code with future versions which might change it (2.19 is the + // to run this code with future versions which might change it (2.30 is the // latest one at the time of this writing) - if (!glib_check_version(2,6,0) && glib_check_version(2,20,0)) + if (glib_check_version(2,6,0) == NULL && glib_check_version(2,31,0)) { usage << _("The following standard GTK+ options are also supported:\n");