Skip to content

Adjust new APIs for RC1 - #14892

Merged
KlausLoeffelmann merged 12 commits into
dotnet:mainfrom
KlausLoeffelmann:APIs_RC1
Aug 14, 2026
Merged

Adjust new APIs for RC1#14892
KlausLoeffelmann merged 12 commits into
dotnet:mainfrom
KlausLoeffelmann:APIs_RC1

Conversation

@KlausLoeffelmann

@KlausLoeffelmann KlausLoeffelmann commented Aug 14, 2026

Copy link
Copy Markdown
Member

Closes #14586.
Contributes to #14694.

This RC1 API consolidation:

  • Adds the designer-friendly KioskModeManager component from Add KioskModeManager component #14736.
  • Supports full-screen state restoration, optional topmost behavior, configurable keyboard toggling and Escape handling, mouse-pointer auto-hide, and power-saving suppression.
  • Resolves containing forms safely for both Form- and UserControl-hosted components and includes lifecycle, display-change, monitor-selection, disposal, data-binding, and pointer-timer coverage.
  • Reverts the unshipped TreeView.NodeLeading API and its related event, protected method, implementation, resources, and tests.
  • Preserves the .NET 11 TreeView suspend-painting integration through BeginUpdate and EndUpdateInternal.
Microsoft Reviewers: Open in CodeFlow

@KlausLoeffelmann
KlausLoeffelmann marked this pull request as ready for review August 14, 2026 19:18
@KlausLoeffelmann
KlausLoeffelmann requested a review from a team as a code owner August 14, 2026 19:18
@KlausLoeffelmann KlausLoeffelmann added the NewApi-Net11 Tracks issues for public APIs targeted for .NET 11. label Aug 14, 2026
@KlausLoeffelmann KlausLoeffelmann added this to the 11.0-rc1 milestone Aug 14, 2026
@ricardobossan
ricardobossan self-requested a review August 14, 2026 19:53
ricardobossan
ricardobossan previously approved these changes Aug 14, 2026
KlausLoeffelmann and others added 12 commits August 14, 2026 13:23
* Refactor KioskModeManager component and introduce WakeUp-Events incl.. new WakeUpEventArgs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 20883488-cf1e-4ad3-a681-0724e9f16777
Size borderless fullscreen forms directly to the selected screen bounds instead of maximizing them. This keeps StatusStrip items and working-area-constrained dropdowns on the same screen edge while preserving restored form state.

Fixes dotnet#14765

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: c352332b-4b81-4492-bcfc-9dec524c27c9
Choose fullscreen bounds from RestoreBounds for minimized and maximized forms so a minimized-window sentinel cannot redirect kiosk mode to the wrong monitor.

Fixes dotnet#14765

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: c352332b-4b81-4492-bcfc-9dec524c27c9
Reapply explicit fullscreen bounds when display geometry or the taskbar working area changes so the normal-state kiosk window tracks the selected screen like the previous maximized window did.

Fixes dotnet#14765

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: c352332b-4b81-4492-bcfc-9dec524c27c9
API review feedback: the "Wakeup" elements are more general than kiosk mode
and should not be part of KioskModeManager. They can reappear later with a
broader scope.

Removes the Wakeup event, OnWakeup, WakeUpCommand, KioskModeWakeupEventArgs,
KioskModeWakeupEventHandler, and KioskModeWakeupSource, along with the power
broadcast and terminal session notification plumbing that only fed them.
Display change tracking, which keeps the fullscreen bounds current, is kept.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8999e9ff-9bcc-4755-b337-7fc5496d431c
API review feedback: HideTaskbar was removed to simplify the window models.

Kiosk fullscreen now always sizes the borderless form to the complete bounds
of the screen that displays it, so there is a single window model and the
kiosk surface always covers the taskbar.

Because the fullscreen form now covers the taskbar, drop-downs owned by that
form can no longer be constrained to the screen working area - doing so
detaches them from the item that opened them (dotnet#14765).
ToolStripDropDown and ToolStripDropDownItem now constrain to the complete
screen bounds when the owning top-level window is borderless and covers the
screen.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8999e9ff-9bcc-4755-b337-7fc5496d431c
- ToggleFullScreenKey => ToggleFullScreenKeys, for consistency with the
  plurality of the Keys type. The property now matches the complete key
  combination, including modifiers, and Keys.None disables key based
  toggling.
- SuppressPowerSaving => AlwaysOn.

Also documents that the fullscreen keys are focus driven: they are evaluated
only for input dispatched to the managed form or one of its child controls,
and no global keyboard hook or system wide hot key is installed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8999e9ff-9bcc-4755-b337-7fc5496d431c
- Clarified MousePointerAutoHideDelay XML docs regarding message queue observation and lack of hooks.
- Updated OnMousePointerAutoHideTimerTick to only hide cursor in fullscreen, with delay > 0, and when not already hidden.
- Added unit tests for timer interval, delay changes, zero-delay behavior, and pointer visibility logic.
@KlausLoeffelmann
KlausLoeffelmann merged commit f724c22 into dotnet:main Aug 14, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

NewApi-Net11 Tracks issues for public APIs targeted for .NET 11.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[.NET 11 API Proposal] Introduce KioskModeManager component

2 participants