X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/676c8c1d39a6b598fe32443c3517a66464ff8c5a..593354ca47abaae8a434f99642acc57f7834f77b:/src/gtk/utilsgtk.cpp?ds=sidebyside diff --git a/src/gtk/utilsgtk.cpp b/src/gtk/utilsgtk.cpp index 1e3df51b02..e7b6208cec 100644 --- a/src/gtk/utilsgtk.cpp +++ b/src/gtk/utilsgtk.cpp @@ -18,7 +18,6 @@ #include "wx/log.h" #endif -#include "wx/sysopt.h" #include "wx/apptrait.h" #include "wx/process.h" #include "wx/sysopt.h" @@ -97,41 +96,6 @@ bool wxSetDetectableAutoRepeat( bool WXUNUSED(flag) ) } #endif -// Escapes string so that it is valid Pango markup XML string: -wxString wxEscapeStringForPangoMarkup(const wxString& str) -{ - size_t len = str.length(); - wxString out; - out.Alloc(len); - for (size_t i = 0; i < len; i++) - { - wxChar c = str[i]; - switch (c) - { - case _T('&'): - out << _T("&"); - break; - case _T('<'): - out << _T("<"); - break; - case _T('>'): - out << _T(">"); - break; - case _T('\''): - out << _T("'"); - break; - case _T('"'): - out << _T("""); - break; - default: - out << c; - break; - } - } - return out; -} - - // ---------------------------------------------------------------------------- // display characterstics // ---------------------------------------------------------------------------- @@ -143,11 +107,8 @@ void *wxGetDisplay() void wxDisplaySize( int *width, int *height ) { - int marginX = wxSystemOptions::GetOptionInt(wxT("gtk.desktopmargin.x")); - int marginY = wxSystemOptions::GetOptionInt(wxT("gtk.desktopmargin.y")); - - if (width) *width = gdk_screen_width() - marginX; - if (height) *height = gdk_screen_height() - marginY; + if (width) *width = gdk_screen_width(); + if (height) *height = gdk_screen_height(); } void wxDisplaySizeMM( int *width, int *height ) @@ -219,10 +180,10 @@ wxConvertFromGTK(const wxString& s, wxFontEncoding enc) #endif // !wxUSE_UNICODE -// Returns false if version is certainly greater or equal than major.minor.micro -// Returns true if version is lower than major.minor.micro OR it cannot be -// determined and one should not rely on the availability of pango version -// major.minor.micro, nor the non-availability +// Returns NULL if version is certainly greater or equal than major.minor.micro +// Returns string describing the error if version is lower than +// major.minor.micro OR it cannot be determined and one should not rely on the +// availability of pango version major.minor.micro, nor the non-availability const gchar *wx_pango_version_check (int major, int minor, int micro) { #ifdef PANGO_VERSION_MAJOR @@ -263,15 +224,27 @@ void GTK_EndProcessDetector(gpointer data, gint source, int status = 0; int rc = waitpid(pid, &status, WNOHANG); - if ( rc == 0 ) - { - // no, it didn't exit yet, continue waiting - return; - } + if ( rc == 0 ) + { + // This can only happen if the child application closes our dummy + // pipe that is used to monitor its lifetime; in that case, our + // best bet is to pretend the process did terminate, because + // otherwise wxExecute() would hang indefinitely + // (OnExceptionWaiting() won't be called again, the descriptor + // is closed now). + wxLogDebug("Child process (PID %i) still alive, even though notification was received that it terminated.", pid); + } + else if ( rc == -1 ) + { + // As above, if waitpid() fails, the best we can do is to log the + // error and pretend the child terminated: + wxLogSysError(_("Failed to check child process' status")); + } // set exit code to -1 if something bad happened - proc_data->exitcode = rc != -1 && WIFEXITED(status) ? WEXITSTATUS(status) - : -1; + proc_data->exitcode = (rc > 0 && WIFEXITED(status)) + ? WEXITSTATUS(status) + : -1; // child exited, end waiting close(source); @@ -579,7 +552,7 @@ wxGUIAppTraits::GetStandardCmdLineOptions(wxArrayString& names, names.push_back(wxGetNameFromGtkOptionEntry(&entries[n])); const gchar * const entryDesc = entries[n].description; - desc.push_back(entryDesc ? wxString(entryDesc) : _T("")); + desc.push_back(wxString(entryDesc)); } g_option_group_free (gtkOpts);