Files
Pilz/Pilz.UI.Telerik/Patches/TelerikUiForWinForms/RadTextBoxControl_PreventAutoStretchOnAutoSize.cs

42 lines
1.2 KiB
C#

using HarmonyLib;
using System.Reflection;
using Telerik.WinControls;
using Telerik.WinControls.UI;
namespace Pilz.UI.Telerik.Patches.TelerikUiForWinForms;
[HarmonyPatch(typeof(RadTextBoxControl))]
[HarmonyPatch("ProcessAutoSizeChanged")]
internal class RadTextBoxControl_PreventAutoStretchOnAutoSize
{
private static readonly MethodInfo m_get_RootElement = AccessTools.PropertyGetter(typeof(RadControl), nameof(RadControl.RootElement));
public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions)
{
var ignored = 0;
var ignoring = false;
int getRootelementCallcount = 0;
foreach (var instruction in instructions)
{
if (instruction.Calls(m_get_RootElement))
{
getRootelementCallcount += 1;
if (getRootelementCallcount == 2)
ignoring = true;
}
if (ignoring)
{
if (ignored >= 4)
ignoring = false;
else
{
ignored += 1;
continue;
}
}
yield return instruction;
}
}
}