)]}'
{
  "commit": "22fcba1c30a8ddb0bbde396ead16094955000fd3",
  "tree": "419bb2587539c20908bea5a5f8f972a0eafd893f",
  "parents": [
    "e69e703dce29fda392f8024109c1961306cb365a"
  ],
  "author": {
    "name": "Matej Knopp",
    "email": "matej.knopp@gmail.com",
    "time": "Thu Jul 23 14:54:02 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jul 23 14:54:02 2026 +0000"
  },
  "message": "Move WindowManager outside of WidgetsApp (#188866)\n\nThis is a prototype branch for moving `WindowManager` outside of\n`WidgetsApp`.\n\nOur current approach where first window is \"blessed\" and other windows\nare anchored inside first window hierarchy is causing multiple issues:\n- Only the first window has navigator\n- Secondary windows focus zones are inside primary window focus zone so\nit is always focused.\n- Widget inspector only works in primary window\n\nIn general there is no reason for one window to be special. Normally for\na desktop application all windows should be equal. The closest we can\nget to this is to give each top level window its own\nWidgets/MaterialApp. While this duplicates some elements that should\nnormally be shared, arguably it behaves better than doing what we do\nright now.\n\nIdeally we\u0027d want to split the App widget into shared and per window\nparts, but that will be a much bigger change.\n\nWith this branch the top level Dialog/Regular window have each their own\nMaterialApp widget and separate focus trees, solving the issues above.\n\n`Popup` and `Tooltip` window work and are anchored at proper place in\nwindow hierarchy (they should not be top level window). However we might\nwant to consider a convenience Widget to anchoring these instead of\nusing `ViewAnchor` + `View`.\n\nScreenshot of example app running in this mode - notice the Debug banner\nand widget inspector buttons in each window.\n\n\u003cimg width\u003d\"900\" height\u003d\"800\" alt\u003d\"Screenshot 2026-07-01 at 5 48 13 PM\"\nsrc\u003d\"https://github.com/user-attachments/assets/bbb6e646-e9d8-4618-9702-19afe0749b11\"\n/\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "71dad55a5f5849c2ec88cc55d96589f18d71bbc4",
      "old_mode": 33188,
      "old_path": "examples/api/lib/widgets/windows/window_manager.0.dart",
      "new_id": "e8d0d178d765762212d478f1dace0e2f5df0fdd1",
      "new_mode": 33188,
      "new_path": "examples/api/lib/widgets/windows/window_manager.0.dart"
    },
    {
      "type": "modify",
      "old_id": "46935af34067e74b95ea6fffe0862878da11f65e",
      "old_mode": 33188,
      "old_path": "examples/multiple_windows/lib/app/dialog_window_content.dart",
      "new_id": "a35cc95af7ec98c80696ef6159db6730e668720e",
      "new_mode": 33188,
      "new_path": "examples/multiple_windows/lib/app/dialog_window_content.dart"
    },
    {
      "type": "modify",
      "old_id": "988406e1dc6bbfec3174530c18c5901162fda812",
      "old_mode": 33188,
      "old_path": "examples/multiple_windows/lib/app/main_window.dart",
      "new_id": "d8be3ed5b2cd1f679a8dcde273a7e1c3a9e3fad8",
      "new_mode": 33188,
      "new_path": "examples/multiple_windows/lib/app/main_window.dart"
    },
    {
      "type": "modify",
      "old_id": "3f18cec5da5ad33896467d409929ebb81f920272",
      "old_mode": 33188,
      "old_path": "examples/multiple_windows/lib/app/popup_button.dart",
      "new_id": "343030db338a22c7f7b413a6390a8a98d7d2ce71",
      "new_mode": 33188,
      "new_path": "examples/multiple_windows/lib/app/popup_button.dart"
    },
    {
      "type": "modify",
      "old_id": "7c71ec237fdad79bd6f6b6060c2f76e02916e35e",
      "old_mode": 33188,
      "old_path": "examples/multiple_windows/lib/app/regular_window_content.dart",
      "new_id": "df9498bc7e872ad3d8a00bb76859bd135334fde9",
      "new_mode": 33188,
      "new_path": "examples/multiple_windows/lib/app/regular_window_content.dart"
    },
    {
      "type": "modify",
      "old_id": "d2e5fa3674472f27fe4f198637ea90bf15bb3c92",
      "old_mode": 33188,
      "old_path": "examples/multiple_windows/lib/app/tooltip_button.dart",
      "new_id": "d7520a5f04f3b8159af246681ec84a3b1641a058",
      "new_mode": 33188,
      "new_path": "examples/multiple_windows/lib/app/tooltip_button.dart"
    },
    {
      "type": "modify",
      "old_id": "d62ecfe21e9b991a47e7c6da9cc39a0d9fca8440",
      "old_mode": 33188,
      "old_path": "examples/multiple_windows/lib/main.dart",
      "new_id": "1bebab3e4208f2e101ab797b57c7bd229a974caa",
      "new_mode": 33188,
      "new_path": "examples/multiple_windows/lib/main.dart"
    },
    {
      "type": "modify",
      "old_id": "89fc13045eeb3ccc51c21e966b0cb39fbb92ae9f",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/widgets/_window.dart",
      "new_id": "9cccaf08f60162cb84e0e8e1447ee93602174d67",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/widgets/_window.dart"
    },
    {
      "type": "modify",
      "old_id": "c3c670626f78e7127937e09347b7360771698d4a",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/widgets/app.dart",
      "new_id": "948d3f599884a3673582626e9f170e2e8d67e03d",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/widgets/app.dart"
    },
    {
      "type": "modify",
      "old_id": "7a2e3cb3b312797b314973836b0e43f83b630e37",
      "old_mode": 33188,
      "old_path": "packages/flutter/lib/src/widgets/dialog.dart",
      "new_id": "bd0501693287216265e62687ea71537727a10c1c",
      "new_mode": 33188,
      "new_path": "packages/flutter/lib/src/widgets/dialog.dart"
    }
  ]
}
