fix: 自定义颜色色块与预设色块保持一致,拾色浮窗改为锚点定位并放行面板内点击

- 自定义颜色入口改为与预设色块完全一致的呈现:当前颜色不在预设中时,
  方格直接填充该自定义颜色(并自动选择浅色/深色加号图标以保证可读性),
  外框尺寸与选中样式与预设色块完全相同。
- 拾色浮窗改为以触发控件矩形为锚点定位:优先紧贴其下方展开,空间不足时改到上方,
  修复此前浮窗遮挡「加号」方格的问题。
- 拾色浮窗展开时点击面板内的其它控件(预设色、线宽、样式、透明度等)不再被吞掉,
  改为「先收起浮窗、再放行该次点击」,一次点击即可切换预设色;
  点击面板外或绘图区仍只收起浮窗。
This commit is contained in:
DeepSeek V4.1 Flash committed 2026-09-29 17:23:45 +08:00
1 parent 729494d1ec
commit 0f98dd9a85
4 files changed
+64 -31

No files matched your search

+15 -3
View File
@@ -1183,13 +1183,25 @@ namespace jdi
m_plot.OnLButtonUp(0, 0);
m_activeTarget = Target::NONE;
m_draggingSplitter = false;
m_colorPicker.OnLButtonDown(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
if (m_colorPicker.IsOpen())
// 点击拾色器外部时收起;若落点落在信号面板内则放行本次点击,
// 便于用户在展开状态下直接改选预设色、线宽等其它样式。
if (m_colorPicker.ContainsPoint(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)))
{
m_colorPicker.OnLButtonDown(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
SetCapture(hwnd);
}
else
{
m_colorPicker.Close();
if (!m_panel.HitTest(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)))
{
InvalidateRect(hwnd, nullptr, FALSE);
return 0;
}
}
repaint = true;
consume = true;
consume = false;
break;
case WM_LBUTTONUP:
m_colorPicker.OnLButtonUp();