X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/307f16e829979a22bf00b699b5b2e852cd4eb59e..fb10f04c957b3712c04ddec92d083209e127b011:/src/gtk1/textctrl.cpp diff --git a/src/gtk1/textctrl.cpp b/src/gtk1/textctrl.cpp index 66fbb33bd5..3fc3e5386c 100644 --- a/src/gtk1/textctrl.cpp +++ b/src/gtk1/textctrl.cpp @@ -182,10 +182,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, m_text = gtk_entry_new(); } - wxSize newSize = size; - if (newSize.x == -1) newSize.x = 80; - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); + SetSizeOrDefault( size ); m_parent->DoAddChild( this ); @@ -567,7 +564,7 @@ void wxTextCtrl::SetInsertionPoint( long pos ) /* bring editable's cursor uptodate. bug in GTK. */ - GTK_EDITABLE(m_text)->current_pos = pos; + GTK_EDITABLE(m_text)->current_pos = (guint32)pos; } } @@ -779,6 +776,20 @@ void wxTextCtrl::OnChar( wxKeyEvent &key_event ) if (GetEventHandler()->ProcessEvent(event)) return; } + if ((key_event.KeyCode() == WXK_RETURN) && !(m_windowStyle & wxTE_MULTILINE)) + { + wxWindow *top_frame = m_parent; + while (top_frame->GetParent() && !(top_frame->IsTopLevel())) + top_frame = top_frame->GetParent(); + GtkWindow *window = GTK_WINDOW(top_frame->m_widget); + + if (window->default_widget) + { + gtk_widget_activate (window->default_widget); + return; + } + } + key_event.Skip(); } @@ -946,7 +957,15 @@ void wxTextCtrl::OnInternalIdle() cursor = *wxSTANDARD_CURSOR; window = m_widget->window; - if (window) + if ((window) && !(GTK_WIDGET_NO_WINDOW(m_widget))) gdk_window_set_cursor( window, cursor.GetCursor() ); } + + UpdateWindowUI(); +} + +wxSize wxTextCtrl::DoGetBestSize() const +{ + // FIXME should be different for multi-line controls... + return wxSize(80, 26); }