]> git.saurik.com Git - wxWidgets.git/commitdiff
implemented ScrollLines/Pages() for GTK+ 2
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 23 Jul 2004 21:32:44 +0000 (21:32 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 23 Jul 2004 21:32:44 +0000 (21:32 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
src/gtk/textctrl.cpp
src/gtk1/textctrl.cpp

index 9f7158bd613c673846728a0b233045020e8e88bd..3475096c4347a95e0605da59f431fa1a4e0d0ba1 100644 (file)
@@ -231,6 +231,7 @@ wxGTK:
 - fixed many rendering artifacts and wrong colours with lots of GTK+ themes
 - implemented wxColourDialog as native dialog
 - implemented wxTextCtrl::HitTest() (GTK+ >= 2)
+- implemented wxTextCtrl::ScrollLines() and ScrollPages for GTK+ 2.x
 - wxTreeCtrl::GetCount() counts root as well now (compatible with MSW)
 - added support for wxCHK_3STATE style (GTK2 only)
 - implemented text underlining under GTK2
index 4f48c8f5cde545ba7a72f1a0e7ede6fe4c184fbd..50783a1b0decfa14b00e97d39a9808aa7ea425b4 100644 (file)
@@ -1718,16 +1718,18 @@ void wxTextCtrl::Thaw()
 
 GtkAdjustment *wxTextCtrl::GetVAdj() const
 {
+    if ( !IsMultiLine() )
+        return NULL;
+
 #ifdef __WXGTK20__
-    return NULL;
+    return gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(m_widget));
 #else
-    return HasFlag(wxTE_MULTILINE) ? GTK_TEXT(m_text)->vadj : NULL;
+    return GTK_TEXT(m_text)->vadj;
 #endif
 }
 
 bool wxTextCtrl::DoScroll(GtkAdjustment *adj, int diff)
 {
-#ifndef __WXGTK20__
     float value = adj->value + diff;
 
     if ( value < 0 )
@@ -1746,39 +1748,38 @@ bool wxTextCtrl::DoScroll(GtkAdjustment *adj, int diff)
 
     adj->value = value;
 
+#ifdef __WXGTK20__
+    gtk_adjustment_value_changed(GTK_ADJUSTMENT(adj));
+#else
     gtk_signal_emit_by_name(GTK_OBJECT(adj), "value_changed");
-
 #endif
+
     return TRUE;
 }
 
 bool wxTextCtrl::ScrollLines(int lines)
 {
-#ifdef __WXGTK20__
-    return FALSE;
-#else
     GtkAdjustment *adj = GetVAdj();
     if ( !adj )
         return FALSE;
 
+#ifdef __WXGTK20__
+    int diff = (int)ceil(lines*adj->step_increment);
+#else
     // this is hardcoded to 10 in GTK+ 1.2 (great idea)
-    static const int KEY_SCROLL_PIXELS = 10;
-
-    return DoScroll(adj, lines*KEY_SCROLL_PIXELS);
+    int diff = 10*lines;
 #endif
+
+    return DoScroll(adj, diff);
 }
 
 bool wxTextCtrl::ScrollPages(int pages)
 {
-#ifdef __WXGTK20__
-    return FALSE;
-#else
     GtkAdjustment *adj = GetVAdj();
     if ( !adj )
         return FALSE;
 
     return DoScroll(adj, (int)ceil(pages*adj->page_increment));
-#endif
 }
 
 
index 4f48c8f5cde545ba7a72f1a0e7ede6fe4c184fbd..50783a1b0decfa14b00e97d39a9808aa7ea425b4 100644 (file)
@@ -1718,16 +1718,18 @@ void wxTextCtrl::Thaw()
 
 GtkAdjustment *wxTextCtrl::GetVAdj() const
 {
+    if ( !IsMultiLine() )
+        return NULL;
+
 #ifdef __WXGTK20__
-    return NULL;
+    return gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(m_widget));
 #else
-    return HasFlag(wxTE_MULTILINE) ? GTK_TEXT(m_text)->vadj : NULL;
+    return GTK_TEXT(m_text)->vadj;
 #endif
 }
 
 bool wxTextCtrl::DoScroll(GtkAdjustment *adj, int diff)
 {
-#ifndef __WXGTK20__
     float value = adj->value + diff;
 
     if ( value < 0 )
@@ -1746,39 +1748,38 @@ bool wxTextCtrl::DoScroll(GtkAdjustment *adj, int diff)
 
     adj->value = value;
 
+#ifdef __WXGTK20__
+    gtk_adjustment_value_changed(GTK_ADJUSTMENT(adj));
+#else
     gtk_signal_emit_by_name(GTK_OBJECT(adj), "value_changed");
-
 #endif
+
     return TRUE;
 }
 
 bool wxTextCtrl::ScrollLines(int lines)
 {
-#ifdef __WXGTK20__
-    return FALSE;
-#else
     GtkAdjustment *adj = GetVAdj();
     if ( !adj )
         return FALSE;
 
+#ifdef __WXGTK20__
+    int diff = (int)ceil(lines*adj->step_increment);
+#else
     // this is hardcoded to 10 in GTK+ 1.2 (great idea)
-    static const int KEY_SCROLL_PIXELS = 10;
-
-    return DoScroll(adj, lines*KEY_SCROLL_PIXELS);
+    int diff = 10*lines;
 #endif
+
+    return DoScroll(adj, diff);
 }
 
 bool wxTextCtrl::ScrollPages(int pages)
 {
-#ifdef __WXGTK20__
-    return FALSE;
-#else
     GtkAdjustment *adj = GetVAdj();
     if ( !adj )
         return FALSE;
 
     return DoScroll(adj, (int)ceil(pages*adj->page_increment));
-#endif
 }