]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/app.cpp
Implement simple Drop, doesn't work under wxMSW (?)
[wxWidgets.git] / src / gtk1 / app.cpp
index 4d47d138f2606e1cf3999be3d25c4da8ee005531..449a0f2a0b37dba5b9144317bc899052abdb14ea 100644 (file)
@@ -7,12 +7,6 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __VMS
-// vms_jackets.h should for proper working be included before anything else
-# include <vms_jackets.h>
-#undef ConnectionNumber
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
     #include "wx/msgdlg.h"
     #include "wx/memory.h"
     #include "wx/font.h"
     #include "wx/msgdlg.h"
     #include "wx/memory.h"
     #include "wx/font.h"
+    #include "wx/gdicmn.h"
+    #include "wx/image.h"
+    #include "wx/module.h"
 #endif
 
 #endif
 
-#include "wx/gdicmn.h"
 #include "wx/file.h"
 #include "wx/filename.h"
 #include "wx/file.h"
 #include "wx/filename.h"
-#include "wx/module.h"
-#include "wx/image.h"
 #include "wx/thread.h"
 
 #ifdef __WXGPE__
 #include "wx/thread.h"
 
 #ifdef __WXGPE__
@@ -74,6 +68,9 @@
     #include <sys/types.h>
     #include <sys/time.h>
     #include <unistd.h>
     #include <sys/types.h>
     #include <sys/time.h>
     #include <unistd.h>
+    #ifdef HAVE_SYS_SELECT_H
+        #include <sys/select.h>
+    #endif
 #endif // HAVE_POLL/!HAVE_POLL
 
 #include "wx/unix/private.h"
 #endif // HAVE_POLL/!HAVE_POLL
 
 #include "wx/unix/private.h"
@@ -88,7 +85,7 @@
 bool   g_mainThreadLocked = false;
 gint   g_pendingTag = 0;
 
 bool   g_mainThreadLocked = false;
 gint   g_pendingTag = 0;
 
-static GtkWidget *gs_RootWindow = (GtkWidget*) NULL;
+static GtkWidget *gs_RootWindow = NULL;
 
 //-----------------------------------------------------------------------------
 // idle system
 
 //-----------------------------------------------------------------------------
 // idle system
@@ -106,14 +103,9 @@ static wxMutex gs_idleTagsMutex;
 // wxYield
 //-----------------------------------------------------------------------------
 
 // wxYield
 //-----------------------------------------------------------------------------
 
-// not static because used by textctrl.cpp
-//
-// MT-FIXME
-bool wxIsInsideYield = false;
-
 bool wxApp::Yield(bool onlyIfNeeded)
 {
 bool wxApp::Yield(bool onlyIfNeeded)
 {
-    if ( wxIsInsideYield )
+    if ( m_isInsideYield )
     {
         if ( !onlyIfNeeded )
         {
     {
         if ( !onlyIfNeeded )
         {
@@ -131,7 +123,7 @@ bool wxApp::Yield(bool onlyIfNeeded)
     }
 #endif // wxUSE_THREADS
 
     }
 #endif // wxUSE_THREADS
 
-    wxIsInsideYield = true;
+    m_isInsideYield = true;
 
     // We need to remove idle callbacks or the loop will
     // never finish.
 
     // We need to remove idle callbacks or the loop will
     // never finish.
@@ -159,7 +151,7 @@ bool wxApp::Yield(bool onlyIfNeeded)
     wxLog::Resume();
 #endif
 
     wxLog::Resume();
 #endif
 
-    wxIsInsideYield = false;
+    m_isInsideYield = false;
 
     return true;
 }
 
     return true;
 }
@@ -180,14 +172,14 @@ void wxApp::WakeUpIdle()
 #if wxUSE_THREADS
     if (!wxThread::IsMain())
         wxMutexGuiEnter();
 #if wxUSE_THREADS
     if (!wxThread::IsMain())
         wxMutexGuiEnter();
-#endif // wxUSE_THREADS_
+#endif // wxUSE_THREADS
 
     wxapp_install_idle_handler();
 
 #if wxUSE_THREADS
     if (!wxThread::IsMain())
         wxMutexGuiLeave();
 
     wxapp_install_idle_handler();
 
 #if wxUSE_THREADS
     if (!wxThread::IsMain())
         wxMutexGuiLeave();
-#endif // wxUSE_THREADS_
+#endif // wxUSE_THREADS
 }
 
 //-----------------------------------------------------------------------------
 }
 
 //-----------------------------------------------------------------------------
@@ -310,7 +302,7 @@ int wxPoll(wxPollFd *ufds, unsigned int nfds, int timeout)
     unsigned int i;
     for ( i = 0; i < nfds; i++ )
     {
     unsigned int i;
     for ( i = 0; i < nfds; i++ )
     {
-        wxASSERT_MSG( ufds[i].fd < wxFD_SETSIZE, _T("fd out of range") );
+        wxASSERT_MSG( ufds[i].fd < FD_SETSIZE, _T("fd out of range") );
 
         if ( ufds[i].events & G_IO_IN )
             wxFD_SET(ufds[i].fd, &readfds);
 
         if ( ufds[i].events & G_IO_IN )
             wxFD_SET(ufds[i].fd, &readfds);
@@ -402,6 +394,28 @@ void wxapp_install_idle_handler()
     wxTheApp->m_idleTag = gtk_idle_add_priority( 1000, wxapp_idle_callback, (gpointer) NULL );
 }
 
     wxTheApp->m_idleTag = gtk_idle_add_priority( 1000, wxapp_idle_callback, (gpointer) NULL );
 }
 
+static bool wxOKlibc()
+{
+#if defined(__UNIX__) && defined(__GLIBC__)
+    // glibc 2.0 uses UTF-8 even when it shouldn't
+    wchar_t res = 0;
+    if ((MB_CUR_MAX == 2) &&
+        (wxMB2WC(&res, "\xdd\xa5", 1) == 1) &&
+        (res==0x765))
+    {
+        // this is UTF-8 allright, check whether that's what we want
+        char *cur_locale = setlocale(LC_CTYPE, NULL);
+        if ((strlen(cur_locale) < 4) ||
+        (strcasecmp(cur_locale + strlen(cur_locale) - 4, "utf8")) ||
+        (strcasecmp(cur_locale + strlen(cur_locale) - 5, "utf-8"))) {
+        // nope, don't use libc conversion
+        return false;
+        }
+    }
+#endif
+    return true;
+}
+
 //-----------------------------------------------------------------------------
 // Access to the root window global
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // Access to the root window global
 //-----------------------------------------------------------------------------
@@ -422,10 +436,6 @@ GtkWidget* wxGetRootWindow()
 
 IMPLEMENT_DYNAMIC_CLASS(wxApp,wxEvtHandler)
 
 
 IMPLEMENT_DYNAMIC_CLASS(wxApp,wxEvtHandler)
 
-BEGIN_EVENT_TABLE(wxApp, wxEvtHandler)
-    EVT_IDLE(wxAppBase::OnIdle)
-END_EVENT_TABLE()
-
 wxApp::wxApp()
 {
 #ifdef __WXDEBUG__
 wxApp::wxApp()
 {
 #ifdef __WXDEBUG__
@@ -443,8 +453,8 @@ wxApp::wxApp()
     m_colorCube = (unsigned char*) NULL;
 
     // this is NULL for a "regular" wxApp, but is set (and freed) by a wxGLApp
     m_colorCube = (unsigned char*) NULL;
 
     // this is NULL for a "regular" wxApp, but is set (and freed) by a wxGLApp
-    m_glVisualInfo = (void *) NULL;
-    m_glFBCInfo = (void *) NULL;
+    m_glVisualInfo = NULL;
+    m_glFBCInfo = NULL;
 }
 
 wxApp::~wxApp()
 }
 
 wxApp::~wxApp()
@@ -580,13 +590,8 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
     gtk_set_locale();
 
     // We should have the wxUSE_WCHAR_T test on the _outside_
     gtk_set_locale();
 
     // We should have the wxUSE_WCHAR_T test on the _outside_
-#if wxUSE_WCHAR_T
-        if (!wxOKlibc())
-            wxConvCurrent = &wxConvLocal;
-#else // !wxUSE_WCHAR_T
     if (!wxOKlibc())
     if (!wxOKlibc())
-        wxConvCurrent = (wxMBConv*) NULL;
-#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
+        wxConvCurrent = &wxConvLocal;
 
 #if wxUSE_UNICODE
     // gtk_init() wants UTF-8, not wchar_t, so convert
 
 #if wxUSE_UNICODE
     // gtk_init() wants UTF-8, not wchar_t, so convert