]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/textctrl.cpp
treectrl.cpp renamed to treegtk.cpp due to usage of VPATH in makefiles
[wxWidgets.git] / src / gtk1 / textctrl.cpp
index 0d41807702eff13c7aa41d0753d6e859b27baf31..73293accf3b0cdc0ed4c7c22f6f39f572c2c104c 100644 (file)
@@ -44,9 +44,10 @@ extern bool   g_blockEventsOnDrag;
 static void
 gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
 static void
 gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
-    if (g_isIdle) wxapp_install_idle_handler();
+    if (!win->m_hasVMT) return;
 
 
-    if (!win->HasVMT()) return;
+    if (g_isIdle) 
+        wxapp_install_idle_handler();
 
     win->SetModified();
 
 
     win->SetModified();
 
@@ -63,11 +64,12 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 static void
 gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
 static void
 gtk_scrollbar_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
 {
-    if (g_isIdle) wxapp_install_idle_handler();
+    if (!win->m_hasVMT) return;
+    
+    if (g_isIdle) 
+        wxapp_install_idle_handler();
 
     win->CalculateScrollbar();
 
     win->CalculateScrollbar();
-    
-    if (!win->HasVMT()) return;
 }
 
 //-----------------------------------------------------------------------------
 }
 
 //-----------------------------------------------------------------------------
@@ -156,16 +158,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);
                       (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 );
         /* 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,
         /* 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);
                        GTK_FILL,
                        0, 0);
             gtk_widget_show(hscrollbar);
@@ -175,6 +178,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
             gtk_text_set_line_wrap( GTK_TEXT(m_text), FALSE );
 #endif
         }
             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 );
         /* 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 );
@@ -254,7 +258,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value,
             gtk_text_set_editable( GTK_TEXT(m_text), 1 );
     }
 
             gtk_text_set_editable( GTK_TEXT(m_text), 1 );
     }
 
-    SetBackgroundColour( parent->GetBackgroundColour() );
+    SetBackgroundColour( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) );
     SetForegroundColour( parent->GetForegroundColour() );
 
     Show( TRUE );
     SetForegroundColour( parent->GetForegroundColour() );
 
     Show( TRUE );
@@ -273,7 +277,6 @@ void wxTextCtrl::CalculateScrollbar()
         if (m_vScrollbarVisible)
         {
             gtk_widget_hide( m_vScrollbar );
         if (m_vScrollbarVisible)
         {
             gtk_widget_hide( m_vScrollbar );
-
             m_vScrollbarVisible = FALSE;
         }
     }
             m_vScrollbarVisible = FALSE;
         }
     }
@@ -282,7 +285,6 @@ void wxTextCtrl::CalculateScrollbar()
         if (!m_vScrollbarVisible)
         {
             gtk_widget_show( m_vScrollbar );
         if (!m_vScrollbarVisible)
         {
             gtk_widget_show( m_vScrollbar );
-
             m_vScrollbarVisible = TRUE;
         }
     }
             m_vScrollbarVisible = TRUE;
         }
     }
@@ -311,6 +313,9 @@ void wxTextCtrl::SetValue( const wxString &value )
 {
     wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
 
 {
     wxCHECK_RET( m_text != NULL, _T("invalid text ctrl") );
 
+    gtk_signal_disconnect_by_func( GTK_OBJECT(m_text),
+      GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
+      
     wxString tmp = _T("");
     if (!value.IsNull()) tmp = value;
     if (m_windowStyle & wxTE_MULTILINE)
     wxString tmp = _T("");
     if (!value.IsNull()) tmp = value;
     if (m_windowStyle & wxTE_MULTILINE)
@@ -329,6 +334,9 @@ void wxTextCtrl::SetValue( const wxString &value )
     {
         gtk_entry_set_text( GTK_ENTRY(m_text), tmp.mbc_str() );
     }
     {
         gtk_entry_set_text( GTK_ENTRY(m_text), tmp.mbc_str() );
     }
+    
+    gtk_signal_connect( GTK_OBJECT(m_text), "changed",
+      GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
 }
 
 void wxTextCtrl::WriteText( const wxString &text )
 }
 
 void wxTextCtrl::WriteText( const wxString &text )