Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f989a412 authored by Johan Redestig's avatar Johan Redestig
Browse files

Consider RTL layout in DPAD navigation in Gallery

Since the Gallery view changes direction the key events LEFT and
RIGHT should swap actions.

Change-Id: Iaeb9cce83e138f315f12ea188de142e67a60d574
parent a4c4c575
Loading
Loading
Loading
Loading
+7 −13
Original line number Diff line number Diff line
@@ -1210,13 +1210,13 @@ public class Gallery extends AbsSpinner implements GestureDetector.OnGestureList
        switch (keyCode) {
            
        case KeyEvent.KEYCODE_DPAD_LEFT:
            if (movePrevious()) {
            if (moveDirection(-1)) {
                playSoundEffect(SoundEffectConstants.NAVIGATION_LEFT);
                return true;
            }
            break;
        case KeyEvent.KEYCODE_DPAD_RIGHT:
            if (moveNext()) {
            if (moveDirection(1)) {
                playSoundEffect(SoundEffectConstants.NAVIGATION_RIGHT);
                return true;
            }
@@ -1256,18 +1256,12 @@ public class Gallery extends AbsSpinner implements GestureDetector.OnGestureList
        return super.onKeyUp(keyCode, event);
    }
    
    boolean movePrevious() {
        if (mItemCount > 0 && mSelectedPosition > 0) {
            scrollToChild(mSelectedPosition - mFirstPosition - 1);
            return true;
        } else {
            return false;
        }
    }
    boolean moveDirection(int direction) {
        direction = isLayoutRtl() ? -direction : direction;
        int targetPosition = mSelectedPosition + direction;

    boolean moveNext() {
        if (mItemCount > 0 && mSelectedPosition < mItemCount - 1) {
            scrollToChild(mSelectedPosition - mFirstPosition + 1);
        if (mItemCount > 0 && targetPosition >= 0 && targetPosition < mItemCount) {
            scrollToChild(targetPosition - mFirstPosition);
            return true;
        } else {
            return false;