# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1638968065 0 # Node ID 6754e8f7014290beb7e82a3ba44ba68afa0750fe # Parent 2987bf90c7c99c1bf1e92c9e394f8393ab41525d 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. diff -r 2987bf90c7c9 -r 6754e8f70142 android/DWindows.kt --- 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() + + 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) { diff -r 2987bf90c7c9 -r 6754e8f70142 android/dw.cpp --- 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; } /*