diff --git a/Dalamud/Interface/Internal/PluginCategoryManager.cs b/Dalamud/Interface/Internal/PluginCategoryManager.cs
index bccd58162..b7a6a6d6c 100644
--- a/Dalamud/Interface/Internal/PluginCategoryManager.cs
+++ b/Dalamud/Interface/Internal/PluginCategoryManager.cs
@@ -149,10 +149,10 @@ namespace Dalamud.Interface.Internal
foreach (var tag in pluginCategoryTags)
{
// only tags from whitelist can be accepted
- int matchIdx = Array.FindIndex(this.CategoryList, x => x.Tag.Equals(tag, StringComparison.InvariantCultureIgnoreCase));
+ var matchIdx = Array.FindIndex(this.CategoryList, x => x.Tag.Equals(tag, StringComparison.InvariantCultureIgnoreCase));
if (matchIdx >= 0)
{
- int categoryId = this.CategoryList[matchIdx].CategoryId;
+ var categoryId = this.CategoryList[matchIdx].CategoryId;
if (categoryId >= FirstTagBasedCategoryId)
{
categoryList.Add(categoryId);
@@ -202,7 +202,7 @@ namespace Dalamud.Interface.Internal
{
var groupInfo = this.groupList[this.currentGroupIdx];
- bool includeAll = (this.currentCategoryIdx == 0) || (groupInfo.GroupKind != GroupKind.Available);
+ var includeAll = (this.currentCategoryIdx == 0) || (groupInfo.GroupKind != GroupKind.Available);
if (includeAll)
{
result.AddRange(plugins);
@@ -215,7 +215,7 @@ namespace Dalamud.Interface.Internal
{
if (this.mapPluginCategories.TryGetValue(plugin, out var pluginCategoryIds))
{
- int matchIdx = Array.IndexOf(pluginCategoryIds, selectedCategoryInfo.CategoryId);
+ var matchIdx = Array.IndexOf(pluginCategoryIds, selectedCategoryInfo.CategoryId);
if (matchIdx >= 0)
{
result.Add(plugin);
diff --git a/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs b/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs
index d9c3156f9..e359bbffe 100644
--- a/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs
+++ b/Dalamud/Interface/Internal/Windows/PluginInstallerWindow.cs
@@ -195,7 +195,6 @@ namespace Dalamud.Interface.Internal.Windows
public override void Draw()
{
this.DrawHeader();
- // this.DrawPluginTabBar();
this.DrawPluginCategories();
this.DrawFooter();
this.DrawErrorModal();
@@ -470,6 +469,7 @@ namespace Dalamud.Interface.Internal.Windows
}
}
+ /*
private void DrawPluginTabBar()
{
ImGui.SetCursorPosY(ImGui.GetCursorPosY() - (5 * ImGuiHelpers.GlobalScale));
@@ -490,7 +490,9 @@ namespace Dalamud.Interface.Internal.Windows
ImGui.PopStyleVar();
}
+ */
+ /*
private void DrawPluginTab(string title, Action drawPluginList)
{
if (ImGui.BeginTabItem(title))
@@ -511,6 +513,7 @@ namespace Dalamud.Interface.Internal.Windows
ImGui.EndTabItem();
}
}
+ */
private void DrawAvailablePluginList()
{
@@ -522,30 +525,38 @@ namespace Dalamud.Interface.Internal.Windows
return;
}
- var filteredList = pluginList
+ var filteredManifests = pluginList
.Where(rm => !this.IsManifestFiltered(rm))
.ToList();
- if (filteredList.Count == 0)
+ if (filteredManifests.Count == 0)
{
ImGui.TextColored(ImGuiColors.DalamudGrey2, Locs.TabBody_SearchNoMatching);
return;
}
- var i = 0;
- foreach (var manifest in filteredList)
+ // reset opened list of collapsibles when switching between categories
+ if (this.categoryManager.IsContentDirty)
{
- var (isInstalled, plugin) = this.IsManifestInstalled(manifest);
+ this.openPluginCollapsibles.Clear();
+ }
+
+ var categoryManifestsList = this.categoryManager.GetCurrentCategoryContent(filteredManifests);
+
+ var i = 0;
+ foreach (var manifest in categoryManifestsList)
+ {
+ var remoteManifest = manifest as RemotePluginManifest;
+ var (isInstalled, plugin) = this.IsManifestInstalled(remoteManifest);
ImGui.PushID($"{manifest.InternalName}{manifest.AssemblyVersion}");
-
if (isInstalled)
{
this.DrawInstalledPlugin(plugin, i++, true);
}
else
{
- this.DrawAvailablePlugin(manifest, i++);
+ this.DrawAvailablePlugin(remoteManifest, i++);
}
ImGui.PopID();
@@ -610,10 +621,10 @@ namespace Dalamud.Interface.Internal.Windows
private void DrawPluginCategories()
{
- float useContentHeight = -40; // button height + spacing
- float useMenuWidth = 180; // works fine as static value, table can be resized by user
+ var useContentHeight = -40f; // button height + spacing
+ var useMenuWidth = 180f; // works fine as static value, table can be resized by user
- float useContentWidth = ImGui.GetContentRegionAvail().X;
+ var useContentWidth = ImGui.GetContentRegionAvail().X;
if (ImGui.BeginChild("InstallerCategories", new Vector2(useContentWidth, useContentHeight * ImGuiHelpers.GlobalScale)))
{
@@ -628,12 +639,12 @@ namespace Dalamud.Interface.Internal.Windows
this.DrawPluginCategorySelectors();
ImGui.TableNextColumn();
- if (ImGui.BeginChild($"ScrollingPlugins", new Vector2(useContentWidth, 0), false, ImGuiWindowFlags.HorizontalScrollbar | ImGuiWindowFlags.NoBackground))
+ if (ImGui.BeginChild("ScrollingPlugins", new Vector2(-1, 0), false, ImGuiWindowFlags.HorizontalScrollbar | ImGuiWindowFlags.NoBackground))
{
this.DrawPluginCategoryContent();
- ImGui.EndChild();
}
+ ImGui.EndChild();
ImGui.EndTable();
}
@@ -654,7 +665,7 @@ namespace Dalamud.Interface.Internal.Windows
}
}
- for (int groupIdx = 0; groupIdx < this.categoryManager.GroupList.Length; groupIdx++)
+ for (var groupIdx = 0; groupIdx < this.categoryManager.GroupList.Length; groupIdx++)
{
var groupInfo = this.categoryManager.GroupList[groupIdx];
var canShowGroup = (groupInfo.GroupKind != PluginCategoryManager.GroupKind.DevTools) || this.hasDevPlugins;
@@ -673,11 +684,11 @@ namespace Dalamud.Interface.Internal.Windows
ImGui.Indent();
var categoryItemSize = new Vector2(ImGui.GetContentRegionAvail().X - (5 * ImGuiHelpers.GlobalScale), ImGui.GetTextLineHeight());
- for (int categoryIdx = 0; categoryIdx < groupInfo.Categories.Count; categoryIdx++)
+ for (var categoryIdx = 0; categoryIdx < groupInfo.Categories.Count; categoryIdx++)
{
var categoryInfo = Array.Find(this.categoryManager.CategoryList, x => x.CategoryId == groupInfo.Categories[categoryIdx]);
- bool hasSearchHighlight = this.categoryManager.IsCategoryHighlighted(categoryInfo.CategoryId);
+ var hasSearchHighlight = this.categoryManager.IsCategoryHighlighted(categoryInfo.CategoryId);
if (hasSearchHighlight)
{
ImGui.PushStyleColor(ImGuiCol.Text, colorSearchHighlight);
@@ -712,6 +723,8 @@ namespace Dalamud.Interface.Internal.Windows
return;
}
+ ImGui.PushStyleVar(ImGuiStyleVar.ItemSpacing, ImGuiHelpers.ScaledVector2(1, 3));
+
var groupInfo = this.categoryManager.GroupList[this.categoryManager.CurrentGroupIdx];
if (groupInfo.GroupKind == PluginCategoryManager.GroupKind.DevTools)
{
@@ -737,42 +750,10 @@ namespace Dalamud.Interface.Internal.Windows
}
else
{
- var pluginList = this.pluginListAvailable;
- if (pluginList.Count > 0)
- {
- // reset opened list of collapsibles when switching between categories
- if (this.categoryManager.IsContentDirty)
- {
- this.openPluginCollapsibles.Clear();
- }
-
- var filteredManifests = pluginList.Where(rm => !this.IsManifestFiltered(rm) && !this.IsManifestInstalled(rm).IsInstalled);
- var categoryManifestsList = this.categoryManager.GetCurrentCategoryContent(filteredManifests);
-
- if (categoryManifestsList.Count > 0)
- {
- var i = 0;
- foreach (var manifest in categoryManifestsList)
- {
- var rmManifest = manifest as RemotePluginManifest;
- if (rmManifest != null)
- {
- ImGui.PushID($"{rmManifest.InternalName}{rmManifest.AssemblyVersion}");
- this.DrawAvailablePlugin(rmManifest, i++);
- ImGui.PopID();
- }
- }
- }
- else
- {
- ImGui.Text(Locs.TabBody_SearchNoMatching);
- }
- }
- else
- {
- ImGui.Text(Locs.TabBody_SearchNoCompatible);
- }
+ this.DrawAvailablePluginList();
}
+
+ ImGui.PopStyleVar();
}
private void DrawImageTester()
@@ -2166,6 +2147,10 @@ namespace Dalamud.Interface.Internal.Windows
if (didAny)
{
Log.Verbose($"Plugin images for {manifest.InternalName} loaded from disk");
+
+ if (pluginImages.Contains(null))
+ pluginImages = pluginImages.Where(image => image != null).ToArray();
+
this.pluginImagesMap[manifest.InternalName] = pluginImages;
return;
@@ -2218,6 +2203,10 @@ namespace Dalamud.Interface.Internal.Windows
if (didAny)
{
Log.Verbose($"Plugin images for {manifest.InternalName} downloaded");
+
+ if (pluginImages.Contains(null))
+ pluginImages = pluginImages.Where(image => image != null).ToArray();
+
this.pluginImagesMap[manifest.InternalName] = pluginImages;
return;
diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs
index 3d872029b..d3f416404 100644
--- a/Dalamud/Plugin/DalamudPluginInterface.cs
+++ b/Dalamud/Plugin/DalamudPluginInterface.cs
@@ -165,11 +165,11 @@ namespace Dalamud.Plugin
#region IPC
///
- /// Gets an IPC publisher.
+ /// Gets an IPC provider.
///
/// The return type for funcs. Use object if this is unused.
/// The name of the IPC registration.
- /// An IPC publisher.
+ /// An IPC provider.
/// This is thrown when the requested types do not match the previously registered types are different.
public ICallGateProvider GetIpcProvider(string name)
=> new CallGatePubSub(name);
@@ -211,7 +211,7 @@ namespace Dalamud.Plugin
///
/// The return type for funcs. Use object if this is unused.
/// The name of the IPC registration.
- /// An IPC publisher.
+ /// An IPC subscriber.
public ICallGateSubscriber GetIpcSubscriber(string name)
=> new CallGatePubSub(name);