Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
d3ef73b
* Small square rendered next to Close button on KryptonForm when usin…
PWagner1 Mar 25, 2026
ac99122
Added Test Form Bug3183SmallSquareRenderedNextToClose
mcpbcs Mar 26, 2026
2f39b81
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Mar 27, 2026
e734e5e
Update Bug3183SmallSquareRenderedNextToClose.Designer.cs
mcpbcs Mar 27, 2026
e5b347e
Merge branch '3183-bug-small-square-rendered-next-to-close-button-on-…
mcpbcs Mar 27, 2026
d8dea15
* Documentation
PWagner1 Mar 28, 2026
4510cd3
Merge branch '3183-bug-small-square-rendered-next-to-close-button-on-…
mcpbcs Mar 28, 2026
1fff5c2
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Mar 28, 2026
4c6534e
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Mar 29, 2026
d17b790
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Apr 16, 2026
2f1fae5
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Apr 16, 2026
89cd073
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Apr 19, 2026
0cd8fc7
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Apr 21, 2026
c83bf82
Update KryptonCustomPaletteBase.cs
PWagner1 Apr 22, 2026
fde6c44
Update StartScreen.cs
PWagner1 Apr 22, 2026
81d450a
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Apr 24, 2026
26d4eac
Merge branch '3183-bug-small-square-rendered-next-to-close-button-on-…
mcpbcs Apr 24, 2026
d486f4f
Font properties with no explicit value were not correctly serialized/…
mcpbcs Apr 24, 2026
7b6a2dc
Revert "Font properties with no explicit value were not correctly ser…
mcpbcs Apr 24, 2026
67f82c9
Font properties with no explicit value were not correctly serialized/…
mcpbcs Apr 24, 2026
08b47c3
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Apr 25, 2026
7316816
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Apr 25, 2026
3abe81f
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Apr 26, 2026
0a9f259
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Apr 27, 2026
6a60987
Merge branch 'alpha' into 3183-bug-small-square-rendered-next-to-clos…
PWagner1 Apr 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Documents/Changelog/Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@

## 2026-11-xx - Build 2611 (V110 Nightly) - November 2026

* Resolved [#3183](https://github.com/Krypton-Suite/Standard-Toolkit/issues/3183), Small square rendered next to Close button on KryptonForm when using a custom theme
* Resolved [#3249](https://github.com/Krypton-Suite/Standard-Toolkit/issues/3249), `KryptonForm` shows an extra border on the secondary monitor when maximized
* Resolved [#3013](https://github.com/Krypton-Suite/Standard-Toolkit/issues/3013), Maximized form's size exceeds the screen's working area
* Resolved [#3164](https://github.com/Krypton-Suite/Standard-Toolkit/issues/3164), Font property values are being serialized depending of the current culture in exported XML theme file
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3124,6 +3124,14 @@ private void ImportFromXmlDocument([DisallowNull] XmlDocument doc)
SetPaletteName(root.GetAttribute("Name"));
}

// Populate missing palette values from the base palette first.
Comment thread
PWagner1 marked this conversation as resolved.
Outdated
//
// Some theme XML files intentionally omit certain button/header metrics and
// drawing settings. Without an initial populate step, those omitted values can
// remain at placeholder defaults and cause small rendering artifacts in the
// KryptonForm caption chrome (e.g. near the system Close button).
PopulateFromBaseOperation(null);

// Grab the properties and images elements
var props = root.SelectSingleNode(nameof(Properties)) as XmlElement;
var images = root.SelectSingleNode(nameof(Images)) as XmlElement;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using TestForm.Properties;

namespace TestForm
{
public partial class Bug3183SmallSquareRenderedNextToClose : KryptonForm
{
public Bug3183SmallSquareRenderedNextToClose()
{
InitializeComponent();
Comment thread
PWagner1 marked this conversation as resolved.
Outdated
}

private void Bug3183SmallSquareRenderedNextToClose_Load(object sender, EventArgs e)
{

}

private void kryptonButton1_Click(object sender, EventArgs e)
{
byte[] contentFile = Encoding.UTF8.GetBytes(Properties.Resources.Microsoft365_Super_Pink);

KryptonCustomPaletteBase customPaletteBase = new KryptonCustomPaletteBase();
customPaletteBase.ImportWithUpgrade(new MemoryStream(contentFile));

this.kryptonManager1.GlobalCustomPalette = customPaletteBase;
this.kryptonManager1.GlobalPaletteMode = PaletteMode.Custom;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema

Version 2.0

The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.

Example:

... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>

There are any number of "resheader" rows that contain simple
name/value pairs.

Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.

The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:

Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.

mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.

mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.

mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="kryptonManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -946,4 +946,7 @@
<data name="delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Microsoft365_Super_Pink" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Microsoft365 Super Pink.xml;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
</root>
1 change: 1 addition & 0 deletions Source/Krypton Components/TestForm/StartScreen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ private void AddButtons()
CreateButton("Tabbed MDI Demo (Issue #1746)", "KryptonTabbedMdiManager: MDI child windows displayed as tab pages instead of overlapping windows.", typeof(TabbedMdiDemo));
CreateButton("Ribbon MDI Demo (Issue #2921)", "Comprehensive demo for Issue #2921: Ribbon + MDI. Verifies no double ribbon tabs when opening/closing maximized MDI children; close/minimize/maximize and QAT click areas aligned with visuals.", typeof(RibbonMdiDemo));
CreateButton("Ribbon QATLocation=Hidden does not hide QAT when FormBorderStyle=None (Issue #3203)", string.Empty, typeof(Bug3203QATLocationHiddenFormTest));
CreateButton("Small square rendered next to Close button on KryptonForm when using a custom theme (Issue #3183)", string.Empty, typeof(Bug3183SmallSquareRenderedNextToClose));
}

private void OnFormClosing(object? sender, FormClosingEventArgs e)
Expand Down
Loading