From cab1d602c9dc429247555d59bfae41dffad836a4 Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Mon, 9 Feb 2026 22:43:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=87=BA=E9=94=99=E6=97=A5=E5=BF=97=E5=8F=AF=E8=83=BD=E6=99=9A?= =?UTF-8?q?=E4=BA=8E=E4=BB=BB=E5=8A=A1=E5=AE=8C=E6=88=90=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaWpfGui/Helper/ToolTipHelper.cs | 2 +- src/MaaWpfGui/Main/AsstProxy.cs | 7 +----- .../ViewModels/UI/TaskQueueViewModel.cs | 22 +++++++++++++++---- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/MaaWpfGui/Helper/ToolTipHelper.cs b/src/MaaWpfGui/Helper/ToolTipHelper.cs index a0dd699354..ca6edebf3e 100644 --- a/src/MaaWpfGui/Helper/ToolTipHelper.cs +++ b/src/MaaWpfGui/Helper/ToolTipHelper.cs @@ -85,7 +85,7 @@ public static class ToolTipHelper /// 图片宽度,默认 640 /// 图片高度,默认 360 /// ToolTip - public static ToolTip CreateTooltip(this BitmapImage image, PlacementMode? placementMode = null, double width = 640, double height = 360) + public static ToolTip CreateTooltip(this BitmapSource image, PlacementMode? placementMode = null, double width = 640, double height = 360) { var img = new Image { diff --git a/src/MaaWpfGui/Main/AsstProxy.cs b/src/MaaWpfGui/Main/AsstProxy.cs index 36834d8da5..a6d177f64f 100644 --- a/src/MaaWpfGui/Main/AsstProxy.cs +++ b/src/MaaWpfGui/Main/AsstProxy.cs @@ -1037,12 +1037,7 @@ public class AsstProxy _tasksStatus.TryGetValue(taskId, out var value); var log = LocalizationHelper.GetString("TaskError") + LocalizationHelper.GetString(taskChain); - Task.Run(async () => { - var screenshot = await AsstGetImageAsync(); - Execute.OnUIThread(() => { - Instances.TaskQueueViewModel.AddLog(log, UiLogColor.Error, toolTip: screenshot?.CreateTooltip(), updateCardImage: true, fetchLatestImage: true); - }); - }); + Instances.TaskQueueViewModel.AddLog(log, UiLogColor.Error, updateCardImage: true, fetchLatestImage: true, useCardImageAsToolTip: true); ToastNotification.ShowDirect(log); if (SettingsViewModel.ExternalNotificationSettings.ExternalNotificationSendWhenError) diff --git a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs index 516028b8c8..8d8e70b3e6 100644 --- a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs @@ -300,7 +300,7 @@ public class TaskQueueViewModel : Screen private static int MaxLogItemsWithThumbnails => SettingsViewModel.GuiSettings.MaxNumberOfLogThumbnails; - private async Task AttachThumbnailToCardAsync(LogCardItemViewModel card, bool forceScreencap) + private async Task AttachThumbnailToCardAsync(LogCardItemViewModel card, bool forceScreencap, bool setToolTipOnLastLogItem = false) { if (card is null) { @@ -324,6 +324,13 @@ public class TaskQueueViewModel : Screen } card.Thumbnail = thumbnail; TrimOldThumbnails(); + + // 若需要将当前 Card 图片作为 ToolTip,在缩略图挂载完成后设置最后一条日志的 ToolTip + if (setToolTipOnLastLogItem && card.Items.Count > 0) + { + var lastLogItem = card.Items[^1]; + lastLogItem.ToolTip = thumbnail?.CreateTooltip(); + } }); } catch @@ -1125,8 +1132,16 @@ public class TaskQueueViewModel : Screen /// The toolTip /// Whether to update the containing card's image/thumbnail. /// Whether to force fetching a fresh screenshot instead of using cache. + /// Whether to use the current card's image as toolTip. /// Whether to split cards before/after this log. - public void AddLog(string? content, string color = UiLogColor.Trace, string weight = "Regular", ToolTip? toolTip = null, bool updateCardImage = false, bool fetchLatestImage = false, LogCardSplitMode splitMode = LogCardSplitMode.None) + public void AddLog(string? content, + string color = UiLogColor.Trace, + string weight = "Regular", + ToolTip? toolTip = null, + bool updateCardImage = false, + bool fetchLatestImage = false, + bool useCardImageAsToolTip = false, + LogCardSplitMode splitMode = LogCardSplitMode.None) { bool isEmpty = string.IsNullOrEmpty(content); bool needsBeforeSplit = splitMode == LogCardSplitMode.Before || splitMode == LogCardSplitMode.Both; @@ -1146,7 +1161,6 @@ public class TaskQueueViewModel : Screen if (LogCardViewModels.Count > 0) { - // 如果有内容,添加到卡片 if (!isEmpty) { TryMergeIntoLastCard(content!, color, weight, toolTip); @@ -1154,7 +1168,7 @@ public class TaskQueueViewModel : Screen if (updateCardImage) { - _ = AttachThumbnailToCardAsync(LogCardViewModels[^1], fetchLatestImage); + _ = AttachThumbnailToCardAsync(LogCardViewModels[^1], fetchLatestImage, setToolTipOnLastLogItem: useCardImageAsToolTip); } }