]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/textctrl.cpp
Fix history in wxWebViewIE when using a custom file scheme.
[wxWidgets.git] / src / gtk1 / textctrl.cpp
index 9dfc2f18575b45e3d13fad8e58d41d51d47e117f..7ce0d35e3d62abfd17c9d6ef6fc0b2c2e9350628 100644 (file)
@@ -13,6 +13,7 @@
 #include "wx/textctrl.h"
 
 #ifndef WX_PRECOMP
 #include "wx/textctrl.h"
 
 #ifndef WX_PRECOMP
+    #include "wx/app.h"
     #include "wx/intl.h"
     #include "wx/log.h"
     #include "wx/utils.h"
     #include "wx/intl.h"
     #include "wx/log.h"
     #include "wx/utils.h"
@@ -23,6 +24,7 @@
 
 #include "wx/strconv.h"
 #include "wx/fontutil.h"        // for wxNativeFontInfo (GetNativeFontInfo())
 
 #include "wx/strconv.h"
 #include "wx/fontutil.h"        // for wxNativeFontInfo (GetNativeFontInfo())
+#include "wx/evtloop.h"
 
 #include <sys/types.h>
 #include <sys/stat.h>
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -89,9 +91,9 @@ static void wxGtkTextInsert(GtkWidget *text,
 extern "C" {
 static void
 gtk_insert_text_callback(GtkEditable *editable,
 extern "C" {
 static void
 gtk_insert_text_callback(GtkEditable *editable,
-                         const gchar *new_text,
-                         gint new_text_length,
-                         gint *position,
+                         const gchar *WXUNUSED(new_text),
+                         gint WXUNUSED(new_text_length),
+                         gint *WXUNUSED(position),
                          wxTextCtrl *win)
 {
     if (g_isIdle)
                          wxTextCtrl *win)
 {
     if (g_isIdle)
@@ -100,7 +102,7 @@ gtk_insert_text_callback(GtkEditable *editable,
     // we should only be called if we have a max len limit at all
     GtkEntry *entry = GTK_ENTRY (editable);
 
     // we should only be called if we have a max len limit at all
     GtkEntry *entry = GTK_ENTRY (editable);
 
-    wxCHECK_RET( entry->text_max_length, _T("shouldn't be called") );
+    wxCHECK_RET( entry->text_max_length, wxT("shouldn't be called") );
 
     // check that we don't overflow the max length limit
     //
 
     // check that we don't overflow the max length limit
     //
@@ -119,7 +121,7 @@ gtk_insert_text_callback(GtkEditable *editable,
         wxCommandEvent event(wxEVT_COMMAND_TEXT_MAXLEN, win->GetId());
         event.SetEventObject(win);
         event.SetString(win->GetValue());
         wxCommandEvent event(wxEVT_COMMAND_TEXT_MAXLEN, win->GetId());
         event.SetEventObject(win);
         event.SetString(win->GetValue());
-        win->GetEventHandler()->ProcessEvent( event );
+        win->HandleWindowEvent( event );
     }
 }
 }
     }
 }
 }
@@ -130,7 +132,7 @@ gtk_insert_text_callback(GtkEditable *editable,
 
 extern "C" {
 static void
 
 extern "C" {
 static void
-gtk_text_changed_callback( GtkWidget *widget, wxTextCtrl *win )
+gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
     if ( win->IgnoreTextUpdate() )
         return;
 {
     if ( win->IgnoreTextUpdate() )
         return;
@@ -145,7 +147,7 @@ gtk_text_changed_callback( GtkWidget *widget, wxTextCtrl *win )
 
     wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->GetId() );
     event.SetEventObject( win );
 
     wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->GetId() );
     event.SetEventObject( win );
-    win->GetEventHandler()->ProcessEvent( event );
+    win->HandleWindowEvent( event );
 }
 }
 
 }
 }
 
@@ -175,8 +177,6 @@ gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 // which implicitly calls wxYield()) so we override GtkText::draw() and simply
 // don't do anything if we're inside wxYield()
 
 // which implicitly calls wxYield()) so we override GtkText::draw() and simply
 // don't do anything if we're inside wxYield()
 
-extern bool wxIsInsideYield;
-
 extern "C" {
     typedef void (*GtkDrawCallback)(GtkWidget *widget, GdkRectangle *rect);
 }
 extern "C" {
     typedef void (*GtkDrawCallback)(GtkWidget *widget, GdkRectangle *rect);
 }
@@ -186,10 +186,11 @@ static GtkDrawCallback gs_gtk_text_draw = NULL;
 extern "C" {
 static void wxgtk_text_draw( GtkWidget *widget, GdkRectangle *rect)
 {
 extern "C" {
 static void wxgtk_text_draw( GtkWidget *widget, GdkRectangle *rect)
 {
-    if ( !wxIsInsideYield )
+    wxEventLoopBase* loop = wxEventLoopBase::GetActive();
+    if ( loop && !loop->IsYielding() )
     {
         wxCHECK_RET( gs_gtk_text_draw != wxgtk_text_draw,
     {
         wxCHECK_RET( gs_gtk_text_draw != wxgtk_text_draw,
-                     _T("infinite recursion in wxgtk_text_draw aborted") );
+                     wxT("infinite recursion in wxgtk_text_draw aborted") );
 
         gs_gtk_text_draw(widget, rect);
     }
 
         gs_gtk_text_draw(widget, rect);
     }
@@ -200,8 +201,6 @@ static void wxgtk_text_draw( GtkWidget *widget, GdkRectangle *rect)
 //  wxTextCtrl
 //-----------------------------------------------------------------------------
 
 //  wxTextCtrl
 //-----------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxTextCtrlBase)
-
 BEGIN_EVENT_TABLE(wxTextCtrl, wxTextCtrlBase)
     EVT_CHAR(wxTextCtrl::OnChar)
 
 BEGIN_EVENT_TABLE(wxTextCtrl, wxTextCtrlBase)
     EVT_CHAR(wxTextCtrl::OnChar)
 
@@ -224,7 +223,7 @@ void wxTextCtrl::Init()
     m_modified = false;
     SetUpdateFont(false);
     m_text =
     m_modified = false;
     SetUpdateFont(false);
     m_text =
-    m_vScrollbar = (GtkWidget *)NULL;
+    m_vScrollbar = NULL;
 }
 
 wxTextCtrl::~wxTextCtrl()
 }
 
 wxTextCtrl::~wxTextCtrl()
@@ -272,7 +271,7 @@ bool wxTextCtrl::Create( wxWindow *parent,
     if (multi_line)
     {
         // create our control ...
     if (multi_line)
     {
         // create our control ...
-        m_text = gtk_text_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
+        m_text = gtk_text_new( NULL, NULL );
 
         // ... and put into the upper left hand corner of the table
         bool bHasHScrollbar = false;
 
         // ... and put into the upper left hand corner of the table
         bool bHasHScrollbar = false;
@@ -405,7 +404,7 @@ void wxTextCtrl::CalculateScrollbar()
     }
 }
 
     }
 }
 
-wxString wxTextCtrl::GetValue() const
+wxString wxTextCtrl::DoGetValue() const
 {
     wxCHECK_MSG( m_text != NULL, wxEmptyString, wxT("invalid text ctrl") );
 
 {
     wxCHECK_MSG( m_text != NULL, wxEmptyString, wxT("invalid text ctrl") );
 
@@ -718,7 +717,7 @@ void wxTextCtrl::DoEnable( bool enable )
 // wxGTK-specific: called recursively by Enable,
 // to give widgets an oppprtunity to correct their colours after they
 // have been changed by Enable
 // wxGTK-specific: called recursively by Enable,
 // to give widgets an oppprtunity to correct their colours after they
 // have been changed by Enable
-void wxTextCtrl::OnEnabled( bool enable )
+void wxTextCtrl::OnEnabled( bool WXUNUSED(enable) )
 {
     if ( IsSingleLine() )
         return;
 {
     if ( IsSingleLine() )
         return;
@@ -727,7 +726,7 @@ void wxTextCtrl::OnEnabled( bool enable )
     // disabled and enabled mode, or we end up with a different colour under the
     // text.
     wxColour oldColour = GetBackgroundColour();
     // disabled and enabled mode, or we end up with a different colour under the
     // text.
     wxColour oldColour = GetBackgroundColour();
-    if (oldColour.Ok())
+    if (oldColour.IsOk())
     {
         // Need to set twice or it'll optimize the useful stuff out
         if (oldColour == * wxWHITE)
     {
         // Need to set twice or it'll optimize the useful stuff out
         if (oldColour == * wxWHITE)
@@ -817,7 +816,7 @@ void wxTextCtrl::SetSelection( long from, long to )
          !GTK_TEXT(m_text)->line_start_cache )
     {
         // tell the programmer that it didn't work
          !GTK_TEXT(m_text)->line_start_cache )
     {
         // tell the programmer that it didn't work
-        wxLogDebug(_T("Can't call SetSelection() before realizing the control"));
+        wxLogDebug(wxT("Can't call SetSelection() before realizing the control"));
         return;
     }
 
         return;
     }
 
@@ -999,7 +998,7 @@ void wxTextCtrl::OnChar( wxKeyEvent &key_event )
         wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
         event.SetEventObject(this);
         event.SetString(GetValue());
         wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
         event.SetEventObject(this);
         event.SetString(GetValue());
-        if (GetEventHandler()->ProcessEvent(event)) return;
+        if (HandleWindowEvent(event)) return;
     }
 
     if ((key_event.GetKeyCode() == WXK_RETURN) && !(m_windowStyle & wxTE_MULTILINE))
     }
 
     if ((key_event.GetKeyCode() == WXK_RETURN) && !(m_windowStyle & wxTE_MULTILINE))
@@ -1072,7 +1071,7 @@ void wxTextCtrl::ChangeFontGlobally()
     // possible!
     wxASSERT_MSG( (m_windowStyle & wxTE_MULTILINE) && m_updateFont,
 
     // possible!
     wxASSERT_MSG( (m_windowStyle & wxTE_MULTILINE) && m_updateFont,
 
-                  _T("shouldn't be called for single line controls") );
+                  wxT("shouldn't be called for single line controls") );
 
     wxString value = GetValue();
     if ( !value.empty() )
 
     wxString value = GetValue();
     if ( !value.empty() )
@@ -1111,7 +1110,7 @@ bool wxTextCtrl::SetBackgroundColour( const wxColour &colour )
     if (!m_widget->window)
         return false;
 
     if (!m_widget->window)
         return false;
 
-    if (!m_backgroundColour.Ok())
+    if (!m_backgroundColour.IsOk())
         return false;
 
     if (m_windowStyle & wxTE_MULTILINE)
         return false;
 
     if (m_windowStyle & wxTE_MULTILINE)
@@ -1146,7 +1145,7 @@ bool wxTextCtrl::SetStyle( long start, long end, const wxTextAttr& style )
         gint l = gtk_text_get_length( GTK_TEXT(m_text) );
 
         wxCHECK_MSG( start >= 0 && end <= l, false,
         gint l = gtk_text_get_length( GTK_TEXT(m_text) );
 
         wxCHECK_MSG( start >= 0 && end <= l, false,
-                     _T("invalid range in wxTextCtrl::SetStyle") );
+                     wxT("invalid range in wxTextCtrl::SetStyle") );
 
         gint old_pos = gtk_editable_get_position( GTK_EDITABLE(m_text) );
         char *text = gtk_editable_get_chars( GTK_EDITABLE(m_text), start, end );
 
         gint old_pos = gtk_editable_get_position( GTK_EDITABLE(m_text) );
         char *text = gtk_editable_get_chars( GTK_EDITABLE(m_text), start, end );
@@ -1243,11 +1242,11 @@ void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event)
 void wxTextCtrl::OnInternalIdle()
 {
     wxCursor cursor = m_cursor;
 void wxTextCtrl::OnInternalIdle()
 {
     wxCursor cursor = m_cursor;
-    if (g_globalCursor.Ok()) cursor = g_globalCursor;
+    if (g_globalCursor.IsOk()) cursor = g_globalCursor;
 
 
-    if (cursor.Ok())
+    if (cursor.IsOk())
     {
     {
-        GdkWindow *window = (GdkWindow*) NULL;
+        GdkWindow *window = NULL;
         if (HasFlag(wxTE_MULTILINE))
             window = GTK_TEXT(m_text)->text_area;
         else
         if (HasFlag(wxTE_MULTILINE))
             window = GTK_TEXT(m_text)->text_area;
         else
@@ -1256,7 +1255,7 @@ void wxTextCtrl::OnInternalIdle()
         if (window)
             gdk_window_set_cursor( window, cursor.GetCursor() );
 
         if (window)
             gdk_window_set_cursor( window, cursor.GetCursor() );
 
-        if (!g_globalCursor.Ok())
+        if (!g_globalCursor.IsOk())
             cursor = *wxSTANDARD_CURSOR;
 
         window = m_widget->window;
             cursor = *wxSTANDARD_CURSOR;
 
         window = m_widget->window;
@@ -1290,7 +1289,7 @@ wxSize wxTextCtrl::DoGetBestSize() const
 // freeze/thaw
 // ----------------------------------------------------------------------------
 
 // freeze/thaw
 // ----------------------------------------------------------------------------
 
-void wxTextCtrl::Freeze()
+void wxTextCtrl::DoFreeze()
 {
     if ( HasFlag(wxTE_MULTILINE) )
     {
 {
     if ( HasFlag(wxTE_MULTILINE) )
     {
@@ -1298,7 +1297,7 @@ void wxTextCtrl::Freeze()
     }
 }
 
     }
 }
 
-void wxTextCtrl::Thaw()
+void wxTextCtrl::DoThaw()
 {
     if ( HasFlag(wxTE_MULTILINE) )
     {
 {
     if ( HasFlag(wxTE_MULTILINE) )
     {