dotnet/winforms

Incorrect toolbar location when restored via `ToolStripManager.LoadSettings`

Open

#4449 aperta il 10 gen 2021

Vedi su GitHub
 (4 commenti) (0 reazioni) (0 assegnatari)C# (922 fork)batch import
:beetle: bugarea-Layoutarea-controls-StripControlshelp wantedtenet-compatibility

Metriche repository

Star
 (4100 star)
Metriche merge PR
 (Merge medio 14g 22h) (56 PR mergiate in 30 g)

Descrizione

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.

Guida contributor