From 7cdbfb6830dcfe9351f0019eb72d0aa338a7d872 Mon Sep 17 00:00:00 2001 From: HarishwaranVijayakumar Date: Sat, 4 Oct 2025 15:50:07 +0530 Subject: [PATCH 1/9] Fix for TimePicker --- .../TimePicker/TimePickerHandler.Android.cs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs index b67518027ae6..ad12c68278ab 100644 --- a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs +++ b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs @@ -5,6 +5,8 @@ using Android.Graphics.Drawables; using Android.Text.Format; using DateFormat = Android.Text.Format.DateFormat; +using Android.Views; +using Microsoft.Maui.Devices; namespace Microsoft.Maui.Handlers { @@ -12,6 +14,8 @@ public partial class TimePickerHandler : ViewHandler Date: Sat, 4 Oct 2025 15:52:35 +0530 Subject: [PATCH 2/9] Refactor --- .vscode/launch.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000000..a81bd58ee982 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": ".NET MAUI", + "type": "maui", + "request": "launch", + "preLaunchTask": "maui: Build" + } + ] +} \ No newline at end of file From 4249f8ab4cc226bf9dc2b6f912458e288f05863a Mon Sep 17 00:00:00 2001 From: HarishwaranVijayakumar Date: Sat, 4 Oct 2025 15:55:08 +0530 Subject: [PATCH 3/9] Remove unwanted code --- .vscode/launch.json | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index a81bd58ee982..000000000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": ".NET MAUI", - "type": "maui", - "request": "launch", - "preLaunchTask": "maui: Build" - } - ] -} \ No newline at end of file From c2d748a3714dbfbc051183dbb96cb3dee2ebb77c Mon Sep 17 00:00:00 2001 From: HarishwaranVijayakumar Date: Mon, 6 Oct 2025 14:07:25 +0530 Subject: [PATCH 4/9] Added braces --- src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs index ad12c68278ab..97e8408c4681 100644 --- a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs +++ b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs @@ -34,7 +34,9 @@ protected override void ConnectHandler(MauiTimePicker platformView) platformView.ViewDetachedFromWindow += OnViewDetachedFromWindow; if (platformView.IsAttachedToWindow) + { OnViewAttachedToWindow(); + } } void OnViewDetachedFromWindow(object? sender = null, View.ViewDetachedFromWindowEventArgs? e = null) From f319e1310ed2a3553e2dcf8b44175d2f2f41b68d Mon Sep 17 00:00:00 2001 From: HarishwaranVijayakumar Date: Thu, 16 Oct 2025 13:15:59 +0530 Subject: [PATCH 5/9] Modified the logic --- src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs index 97e8408c4681..506303480353 100644 --- a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs +++ b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs @@ -145,10 +145,8 @@ internal static void MapIsOpen(ITimePickerHandler handler, ITimePicker timePicke void ShowPickerDialog() { - if (VirtualView is null) - { + if (VirtualView == null) return; - } ShowPickerDialog(VirtualView.Time); From 7a24cf649a096553185d763dc130fe54d344709f Mon Sep 17 00:00:00 2001 From: HarishwaranVijayakumar Date: Wed, 1 Apr 2026 14:36:59 +0530 Subject: [PATCH 6/9] Add OnMainDisplayInfoChanged --- .../TimePicker/TimePickerHandler.Android.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs index 506303480353..a8364cb75d5e 100644 --- a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs +++ b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs @@ -209,5 +209,20 @@ bool Use24HourView return IsCustom24HourFormat(VirtualView.Format); } } + + void OnMainDisplayInfoChanged(object? sender, DisplayInfoChangedEventArgs e) + { + // Only handle orientation changes when dialog is actually showing + if (_dialog is not null && _dialog.IsShowing) + { + // Unsubscribe first to prevent the DismissEvent from hiding the new dialog + _dialog.DismissEvent -= OnDialogDismiss; + _dialog.Dismiss(); + _dialog = null; + + // Recreate dialog with current values to handle orientation change + ShowPickerDialog(new TimeSpan(_currentHour, _currentMinute, 0)); + } + } } } \ No newline at end of file From 920b9dad19f1051b524e2ae722ad2d4475295e78 Mon Sep 17 00:00:00 2001 From: HarishwaranVijayakumar Date: Wed, 1 Apr 2026 14:38:51 +0530 Subject: [PATCH 7/9] Update ShowPickerDialog method --- .../src/Handlers/TimePicker/TimePickerHandler.Android.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs index a8364cb75d5e..5671f60e36bf 100644 --- a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs +++ b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs @@ -145,13 +145,14 @@ internal static void MapIsOpen(ITimePickerHandler handler, ITimePicker timePicke void ShowPickerDialog() { - if (VirtualView == null) + if (VirtualView is null) + { return; - + } ShowPickerDialog(VirtualView.Time); } - + // This overload is here so we can pass in the current values from the dialog // on an orientation change (so that orientation changes don't cause the user's date selection progress // to be lost). Not useful until we have orientation changed events. From 6dd381017897b9537bfdfd2cd71469ae52edad74 Mon Sep 17 00:00:00 2001 From: HarishwaranVijayakumar Date: Wed, 1 Apr 2026 14:40:12 +0530 Subject: [PATCH 8/9] Refactor --- src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs index 5671f60e36bf..193f42f8d9da 100644 --- a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs +++ b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs @@ -152,7 +152,7 @@ void ShowPickerDialog() ShowPickerDialog(VirtualView.Time); } - + // This overload is here so we can pass in the current values from the dialog // on an orientation change (so that orientation changes don't cause the user's date selection progress // to be lost). Not useful until we have orientation changed events. From 71cec95f33ac14daaa8ef60732389c19a6537673 Mon Sep 17 00:00:00 2001 From: HarishwaranVijayakumar Date: Mon, 6 Apr 2026 16:57:07 +0530 Subject: [PATCH 9/9] Address AI concern --- .../Handlers/TimePicker/TimePickerHandler.Android.cs | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs index 193f42f8d9da..33319be8a02c 100644 --- a/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs +++ b/src/Core/src/Handlers/TimePicker/TimePickerHandler.Android.cs @@ -14,8 +14,6 @@ public partial class TimePickerHandler : ViewHandler