Mercurial > dwindows
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; } /*