dotnet/winforms

Incorrect toolbar location when restored via `ToolStripManager.LoadSettings`

Open

#4.449 geöffnet am 10. Jan. 2021

Auf GitHub ansehen
 (4 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C# (922 Forks)batch import
:beetle: bugarea-Layoutarea-controls-StripControlshelp wantedtenet-compatibility

Repository-Metriken

Stars
 (4.100 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 14T 22h) (56 gemergte PRs in 30 T)

Beschreibung

Presumably all versions:

  • .NET Framework: 4.6.1 (tested)
  • .NET Version: 5.0 (tested)

Problem description:

Originally reported in https://github.com/gitextensions/gitextensions/issues/8680.

If an application has multiple toolbars, and those are placed at an arbitrary location and persisted via ToolStripManager.SaveSettings, not all toolbars will be correctly located once ToolStripManager.LoadSettings is called. E.g. on save: image

On load: image

Expected behavior:

The location of the toolbars persisted in the config must be preserved.

Minimal repro:

  1. clone https://github.com/RussKie/Test-ToolStripLoad
  2. Run the app, align both toolbars to the left one under another.
  3. Stop the app.
  4. Open the user.config file, located somethere at C:\Users\<user>\AppData\Local\ToolstripLoad\ToolstripLoad_Url_<random string>\1.0.0.0, check that both toolbars' locations are like this:
        <System.Windows.Forms.ToolStripSettings.toolsettings.ToolStripFilters>
            <setting name="Name" serializeAs="String">
                <value>ToolStripFilters</value>
            </setting>
            <setting name="Location" serializeAs="String">
                <value>7, 25</value>
            </setting>
        </System.Windows.Forms.ToolStripSettings.toolsettings.ToolStripFilters>
        <System.Windows.Forms.ToolStripSettings.toolsettings.ToolStripMain>
            <setting name="Name" serializeAs="String">
                <value>ToolStripMain</value>
            </setting>
            <setting name="Location" serializeAs="String">
                <value>7, 0</value>
            </setting>
        </System.Windows.Forms.ToolStripSettings.toolsettings.ToolStripMain>
  1. Run the app again and observe the bottom toolbar shifted by few pixels to the right.
  2. Close the app and see that the location value for ToolStripFilters has changed.

Contributor Guide