From b290740cf76fe9eeac8f703fa7293d627162a18e Mon Sep 17 00:00:00 2001 From: pinpong Date: Sun, 1 Feb 2026 08:55:32 +0700 Subject: [PATCH 1/4] ci: pin Xcode 26.2 --- .github/workflows/pull_request.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 4394d71..b3b06e5 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -9,7 +9,7 @@ concurrency: jobs: lint: - runs-on: macos-latest + runs-on: macos-26 steps: - name: Checkout uses: actions/checkout@v5.0.0 @@ -110,10 +110,10 @@ jobs: JAVA_OPTS: '-XX:MaxHeapSize=6g' run: yarn build:android build-ios: - runs-on: macos-latest + runs-on: macos-26 needs: [lint, test, docs] env: - XCODE_VERSION: '26.0.1' + XCODE_VERSION: '26.2' steps: - name: Checkout uses: actions/checkout@v5.0.0 From 7810c49f936d11e5fe9f9c265447b2d4debe96fe Mon Sep 17 00:00:00 2001 From: Otto Ranta-Ojala Date: Sat, 31 Jan 2026 23:20:40 +0200 Subject: [PATCH 2/4] Fix memory leak by nullifying lifecycleObserver --- android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt b/android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt index 25339a8..9bd6e0f 100644 --- a/android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt +++ b/android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt @@ -813,6 +813,7 @@ class GoogleMapsViewImpl( if (destroyed) return@onUi destroyed = true lifecycleObserver?.toDestroyedState() + lifecycleObserver = null markerBuilder.cancelAllJobs() clearMarkers() clearPolylines() From d36ca7f0129aad2d4fb682037a9f5e359eecb6a2 Mon Sep 17 00:00:00 2001 From: pinpong Date: Mon, 9 Feb 2026 10:20:00 +0700 Subject: [PATCH 3/4] ci: run commitlint --- .github/workflows/pull_request.yml | 15 +++++++++++++++ package.json | 1 + 2 files changed, 16 insertions(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index b3b06e5..bed3ed7 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -8,8 +8,23 @@ concurrency: cancel-in-progress: true jobs: + commitlint: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v5.0.0 + with: + fetch-depth: 0 + + - name: Setup + uses: ./.github/actions/setup + + - name: Lint commit messages + run: | + yarn commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose lint: runs-on: macos-26 + needs: [commitlint] steps: - name: Checkout uses: actions/checkout@v5.0.0 diff --git a/package.json b/package.json index 9559251..4b89086 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "source": "src/index", "react-native": "src/index", "scripts": { + "commitlint": "commitlint", "typecheck:lib": "tsc --noEmit -p tsconfig.json", "typecheck:example": "tsc --noEmit -p example/tsconfig.json", "typecheck": "yarn typecheck:lib && yarn typecheck:example", From c8e1c8a10c8f4fd3a9510bd38edb5d474481416f Mon Sep 17 00:00:00 2001 From: Otto Ranta-Ojala Date: Sun, 1 Feb 2026 10:39:34 +0200 Subject: [PATCH 4/4] Fixed parent view from stealing map pan gesture --- .../rngooglemapsplus/GoogleMapsViewImpl.kt | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt b/android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt index 9bd6e0f..5aacaa9 100644 --- a/android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt +++ b/android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt @@ -10,7 +10,9 @@ import android.content.res.Configuration import android.graphics.Bitmap import android.location.Location import android.util.Size +import android.view.MotionEvent import android.view.View +import android.view.ViewGroup import android.widget.FrameLayout import androidx.lifecycle.Lifecycle import androidx.lifecycle.findViewTreeLifecycleOwner @@ -181,6 +183,30 @@ class GoogleMapsViewImpl( } } + private fun disallowParentTouchEventIntercept(disallowIntercept: Boolean): Boolean { + val parent = this.parent as? ViewGroup + if (parent != null) { + parent.requestDisallowInterceptTouchEvent(disallowIntercept) + return true + } + return false + } + + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { + when (ev.actionMasked) { + MotionEvent.ACTION_DOWN -> { + disallowParentTouchEventIntercept( + googleMap?.uiSettings?.isScrollGesturesEnabled ?: false + ) + } + MotionEvent.ACTION_UP -> { + disallowParentTouchEventIntercept(false) + } + } + super.dispatchTouchEvent(ev) + return true + } + override fun onCameraMoveStarted(reason: Int) = onUi { if (!mapViewLoaded) return@onUi