changeset 2719:6754e8f70142

Android: Split out scrollbar to a separate implementation. Scrollbar and Sliders are essentially the same, just visually different. Hide the track like we did on iOS using progress(Background)TintList. Both were rotated too far and were actually upside down.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 08 Dec 2021 12:54:25 +0000
parents 2987bf90c7c9
children 9ce1649b0fbd
files android/DWindows.kt android/dw.cpp
diffstat 2 files changed, 45 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/android/DWindows.kt	Wed Dec 08 11:36:31 2021 +0000
+++ b/android/DWindows.kt	Wed Dec 08 12:54:25 2021 +0000
@@ -3552,6 +3552,37 @@
         }
     }
 
+    fun scrollBarNew(vertical: Int, cid: Int): SeekBar?
+    {
+        var slider: SeekBar? = null
+
+        waitOnUiThread {
+            val dataArrayMap = SimpleArrayMap<String, Long>()
+
+            slider = SeekBar(this)
+            slider!!.tag = dataArrayMap
+            slider!!.id = cid
+            slider!!.max = 1
+            slider!!.progressTintList = null
+            slider!!.progressBackgroundTintList = null
+            if (vertical != 0) {
+                slider!!.rotation = 90F
+            }
+            slider!!.setOnSeekBarChangeListener(object : OnSeekBarChangeListener {
+                override fun onStopTrackingTouch(seekBar: SeekBar) {
+                }
+
+                override fun onStartTrackingTouch(seekBar: SeekBar) {
+                }
+
+                override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
+                    eventHandlerInt(slider as View, DWEvent.VALUE_CHANGED, slider!!.progress, 0, 0, 0)
+                }
+            })
+        }
+        return slider
+    }
+
     fun sliderNew(vertical: Int, increments: Int, cid: Int): SeekBar?
     {
         var slider: SeekBar? = null
@@ -3564,7 +3595,7 @@
             slider!!.id = cid
             slider!!.max = increments
             if (vertical != 0) {
-                slider!!.rotation = 270F
+                slider!!.rotation = 90F
             }
             slider!!.setOnSeekBarChangeListener(object : OnSeekBarChangeListener {
                 override fun onStopTrackingTouch(seekBar: SeekBar) {
--- a/android/dw.cpp	Wed Dec 08 11:36:31 2021 +0000
+++ b/android/dw.cpp	Wed Dec 08 12:54:25 2021 +0000
@@ -1985,7 +1985,19 @@
  */
 HWND API dw_scrollbar_new(int vertical, ULONG cid)
 {
-    return dw_slider_new(vertical, 100, cid);
+    JNIEnv *env;
+
+    if((env = (JNIEnv *)pthread_getspecific(_dw_env_key)))
+    {
+        // First get the class that contains the method you need to call
+        jclass clazz = _dw_find_class(env, DW_CLASS_NAME);
+        // Get the method that you want to call
+        jmethodID scrollBarNew = env->GetMethodID(clazz, "scrollBarNew", "(II)Landroid/widget/SeekBar;");
+        // Call the method on the object
+        jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, scrollBarNew, vertical, (jint)cid), _DW_REFERENCE_WEAK);
+        return result;
+    }
+    return nullptr;
 }
 
 /*