Fix scrolling weirdness.

This commit is contained in:
Ottermandias 2024-01-11 13:31:33 +01:00
parent 63fff56a60
commit 4a6e7fccec
2 changed files with 34 additions and 19 deletions

View file

@ -1,4 +1,6 @@
using Dalamud.Interface.Utility.Raii;
using Dalamud.Plugin;
using ImGuiNET;
using Penumbra.Mods;
using Penumbra.Services;
using Penumbra.UI.AdvancedWindow;
@ -12,6 +14,7 @@ public class ModPanel : IDisposable
private readonly ModEditWindow _editWindow;
private readonly ModPanelHeader _header;
private readonly ModPanelTabBar _tabs;
private bool _resetCursor;
public ModPanel(DalamudPluginInterface pi, ModFileSystemSelector selector, ModEditWindow editWindow, ModPanelTabBar tabs,
MultiModPanel multiModPanel, CommunicatorService communicator)
@ -32,7 +35,17 @@ public class ModPanel : IDisposable
return;
}
if (_resetCursor)
{
_resetCursor = false;
ImGui.SetScrollX(0);
}
_header.Draw();
ImGui.SetCursorPosX(ImGui.GetScrollX() + ImGui.GetCursorPosX());
using var child = ImRaii.Child("Tabs",
new Vector2(ImGui.GetWindowContentRegionMax().X - ImGui.GetWindowContentRegionMin().X, ImGui.GetContentRegionAvail().Y));
if (child)
_tabs.Draw(_mod);
}
@ -47,6 +60,7 @@ public class ModPanel : IDisposable
private void OnSelectionChange(Mod? old, Mod? mod, in ModFileSystemSelector.ModState _)
{
_resetCursor = true;
if (mod == null || _selector.Selected == null)
{
_editWindow.IsOpen = false;

View file

@ -139,24 +139,6 @@ public class ModsTab : ITab
if (hovered)
ImGui.SetTooltip($"The supported modifiers for '/penumbra redraw' are:\n{TutorialService.SupportedRedrawModifiers}");
void DrawButton(Vector2 size, string label, string lower, string additionalTooltip)
{
using (var disabled = ImRaii.Disabled(additionalTooltip.Length > 0))
{
if (ImGui.Button(label, size))
{
if (lower.Length > 0)
_redrawService.RedrawObject(lower, RedrawType.Redraw);
else
_redrawService.RedrawAll(RedrawType.Redraw);
}
}
ImGuiUtil.HoverTooltip(lower.Length > 0
? $"Execute '/penumbra redraw {lower}'.{additionalTooltip}"
: $"Execute '/penumbra redraw'.{additionalTooltip}", ImGuiHoveredFlags.AllowWhenDisabled);
}
using var id = ImRaii.PushId("Redraw");
using var disabled = ImRaii.Disabled(_clientState.LocalPlayer == null);
ImGui.SameLine();
@ -185,6 +167,25 @@ public class ModsTab : ITab
? "\nCan currently only be used for indoor furniture."
: string.Empty;
DrawButton(frameHeight with { X = ImGui.GetContentRegionAvail().X - 1 }, "Furniture", "furniture", tt);
return;
void DrawButton(Vector2 size, string label, string lower, string additionalTooltip)
{
using (_ = ImRaii.Disabled(additionalTooltip.Length > 0))
{
if (ImGui.Button(label, size))
{
if (lower.Length > 0)
_redrawService.RedrawObject(lower, RedrawType.Redraw);
else
_redrawService.RedrawAll(RedrawType.Redraw);
}
}
ImGuiUtil.HoverTooltip(lower.Length > 0
? $"Execute '/penumbra redraw {lower}'.{additionalTooltip}"
: $"Execute '/penumbra redraw'.{additionalTooltip}", ImGuiHoveredFlags.AllowWhenDisabled);
}
}
private static unsafe bool IsIndoors()