]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/textctrl.cpp
The Unicode handling fixes my app seemed to need.
[wxWidgets.git] / src / gtk / textctrl.cpp
index de650285b70b07b45bc72ea359d0f8b3468aaa76..51169aaa6041cc961bad5365132a393f2b3148dd 100644 (file)
@@ -137,7 +137,9 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
 
     PreCreation( parent, id, pos, size, style, name );
 
+#if wxUSE_VALIDATORS
     SetValidator( validator );
+#endif // wxUSE_VALIDATORS
 
     m_vScrollbarVisible = FALSE;
 
@@ -158,16 +160,17 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
                       (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
                       (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
                        0, 0);
-
+                      
         /* always wrap words */
         gtk_text_set_word_wrap( GTK_TEXT(m_text), TRUE );
+       
         /* put the horizontal scrollbar in the lower left hand corner */
         if (bHasHScrollbar)
         {
             GtkWidget *hscrollbar = gtk_hscrollbar_new(GTK_TEXT(m_text)->hadj);
             GTK_WIDGET_UNSET_FLAGS( hscrollbar, GTK_CAN_FOCUS );
             gtk_table_attach(GTK_TABLE(m_widget), hscrollbar, 0, 1, 1, 2,
-                       (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+                       (GtkAttachOptions)(GTK_EXPAND | GTK_FILL | GTK_SHRINK),
                        GTK_FILL,
                        0, 0);
             gtk_widget_show(hscrollbar);
@@ -177,6 +180,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
             gtk_text_set_line_wrap( GTK_TEXT(m_text), FALSE );
 #endif
         }
+       
         /* finally, put the vertical scrollbar in the upper right corner */
         m_vScrollbar = gtk_vscrollbar_new( GTK_TEXT(m_text)->vadj );
         GTK_WIDGET_UNSET_FLAGS( m_vScrollbar, GTK_CAN_FOCUS );
@@ -256,7 +260,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
             gtk_text_set_editable( GTK_TEXT(m_text), 1 );
     }
 
-    SetBackgroundColour( parent->GetBackgroundColour() );
+    SetBackgroundColour( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) );
     SetForegroundColour( parent->GetForegroundColour() );
 
     Show( TRUE );
@@ -693,7 +697,7 @@ void wxTextCtrl::SetSelection( long from, long to )
 
 void wxTextCtrl::ShowPosition( long WXUNUSED(pos) )
 {
-    wxFAIL_MSG( _T("wxTextCtrl::ShowPosition not implemented") );
+//    SetInsertionPoint( pos );
 }
 
 long wxTextCtrl::GetInsertionPoint() const
@@ -823,17 +827,24 @@ bool wxTextCtrl::CanRedo() const
 // selection.
 void wxTextCtrl::GetSelection(long* from, long* to) const
 {
-    // TODO
-    *from = 0;
-    *to = 0;
-    wxFAIL_MSG( _T("wxTextCtrl::GetSelection not implemented") );
+    wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
+    
+    if (!(GTK_EDITABLE(m_text)->has_selection))
+    {
+        if (from) *from = 0;
+       if (to)   *to = 0;
+       return;
+    }
+    
+    if (from) *from = (long) GTK_EDITABLE(m_text)->selection_start_pos;
+    if (to)   *to = (long) GTK_EDITABLE(m_text)->selection_end_pos;
 }
 
 bool wxTextCtrl::IsEditable() const
 {
-    // TODO
-    wxFAIL_MSG( _T("wxTextCtrl::IsEditable not implemented") );
-    return FALSE;
+    wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );
+
+    return GTK_EDITABLE(m_text)->editable;
 }
 
 void wxTextCtrl::Clear()