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);
}
}