// Name: src/gtk1/textctrl.cpp
// Purpose:
// Author: Robert Roebling
-// Id: $Id$
// Copyright: (c) 1998 Robert Roebling, Vadim Zeitlin
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/strconv.h"
#include "wx/fontutil.h" // for wxNativeFontInfo (GetNativeFontInfo())
+#include "wx/evtloop.h"
#include <sys/types.h>
#include <sys/stat.h>
// 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
//
gtk_signal_emit_stop_by_name(GTK_OBJECT(editable), "insert_text");
// remember that the next changed signal is to be ignored to avoid
- // generating a dummy wxEVT_COMMAND_TEXT_UPDATED event
+ // generating a dummy wxEVT_TEXT event
win->IgnoreNextTextUpdate();
// and generate the correct one ourselves
- wxCommandEvent event(wxEVT_COMMAND_TEXT_MAXLEN, win->GetId());
+ wxCommandEvent event(wxEVT_TEXT_MAXLEN, win->GetId());
event.SetEventObject(win);
event.SetString(win->GetValue());
win->HandleWindowEvent( event );
win->SetModified();
win->UpdateFontIfNeeded();
- wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->GetId() );
+ wxCommandEvent event( wxEVT_TEXT, win->GetId() );
event.SetEventObject( win );
win->HandleWindowEvent( event );
}
extern "C" {
static void wxgtk_text_draw( GtkWidget *widget, GdkRectangle *rect)
{
- if ( !wxTheApp->IsYielding() )
+ wxEventLoopBase* loop = wxEventLoopBase::GetActive();
+ if ( loop && !loop->IsYielding() )
{
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);
}
// wxTextCtrl
//-----------------------------------------------------------------------------
-IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxTextCtrlBase)
-
BEGIN_EVENT_TABLE(wxTextCtrl, wxTextCtrlBase)
EVT_CHAR(wxTextCtrl::OnChar)
}
}
-wxString wxTextCtrl::GetValue() const
+wxString wxTextCtrl::DoGetValue() const
{
wxCHECK_MSG( m_text != NULL, wxEmptyString, wxT("invalid text ctrl") );
}
}
-// 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 WXUNUSED(enable) )
-{
- if ( IsSingleLine() )
- return;
-
- // If we have a custom background colour, we use this colour in both
- // disabled and enabled mode, or we end up with a different colour under the
- // text.
- wxColour oldColour = GetBackgroundColour();
- if (oldColour.Ok())
- {
- // Need to set twice or it'll optimize the useful stuff out
- if (oldColour == * wxWHITE)
- SetBackgroundColour(*wxBLACK);
- else
- SetBackgroundColour(*wxWHITE);
- SetBackgroundColour(oldColour);
- }
-}
-
void wxTextCtrl::MarkDirty()
{
m_modified = true;
!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;
}
if ((key_event.GetKeyCode() == WXK_RETURN) && (m_windowStyle & wxTE_PROCESS_ENTER))
{
- wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
+ wxCommandEvent event(wxEVT_TEXT_ENTER, m_windowId);
event.SetEventObject(this);
event.SetString(GetValue());
if (HandleWindowEvent(event)) return;
// 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() )
if (!m_widget->window)
return false;
- if (!m_backgroundColour.Ok())
+ if (!m_backgroundColour.IsOk())
return false;
if (m_windowStyle & wxTE_MULTILINE)
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 );
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 = NULL;
if (HasFlag(wxTE_MULTILINE))
if (window)
gdk_window_set_cursor( window, cursor.GetCursor() );
- if (!g_globalCursor.Ok())
+ if (!g_globalCursor.IsOk())
cursor = *wxSTANDARD_CURSOR;
window = m_widget->window;