diff --git a/3rdparty/qwindowkitty/src/styles/styles.qrc b/3rdparty/qwindowkitty/src/styles/styles.qrc
index a52665482b..0cf1b4fa57 100644
--- a/3rdparty/qwindowkitty/src/styles/styles.qrc
+++ b/3rdparty/qwindowkitty/src/styles/styles.qrc
@@ -21,13 +21,5 @@
window-bar/login-white.svg
window-bar/logout.svg
window-bar/logout-white.svg
- window-bar/left-align.svg
- window-bar/left-align-white.svg
- window-bar/middle-align.svg
- window-bar/middle-align-white.svg
- window-bar/right-align.svg
- window-bar/right-align-white.svg
- window-bar/ocr.svg
- window-bar/ocr-white.svg
diff --git a/3rdparty/qwindowkitty/src/styles/window-bar/left-align-white.svg b/3rdparty/qwindowkitty/src/styles/window-bar/left-align-white.svg
deleted file mode 100644
index 394a54a653..0000000000
--- a/3rdparty/qwindowkitty/src/styles/window-bar/left-align-white.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/3rdparty/qwindowkitty/src/styles/window-bar/left-align.svg b/3rdparty/qwindowkitty/src/styles/window-bar/left-align.svg
deleted file mode 100644
index e3031d39d3..0000000000
--- a/3rdparty/qwindowkitty/src/styles/window-bar/left-align.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/3rdparty/qwindowkitty/src/styles/window-bar/middle-align-white.svg b/3rdparty/qwindowkitty/src/styles/window-bar/middle-align-white.svg
deleted file mode 100644
index 6d10d57a3c..0000000000
--- a/3rdparty/qwindowkitty/src/styles/window-bar/middle-align-white.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/3rdparty/qwindowkitty/src/styles/window-bar/middle-align.svg b/3rdparty/qwindowkitty/src/styles/window-bar/middle-align.svg
deleted file mode 100644
index 667e74f4a2..0000000000
--- a/3rdparty/qwindowkitty/src/styles/window-bar/middle-align.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/3rdparty/qwindowkitty/src/styles/window-bar/ocr-white.svg b/3rdparty/qwindowkitty/src/styles/window-bar/ocr-white.svg
deleted file mode 100644
index 47a0697303..0000000000
--- a/3rdparty/qwindowkitty/src/styles/window-bar/ocr-white.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/3rdparty/qwindowkitty/src/styles/window-bar/ocr.svg b/3rdparty/qwindowkitty/src/styles/window-bar/ocr.svg
deleted file mode 100644
index 0207f68b92..0000000000
--- a/3rdparty/qwindowkitty/src/styles/window-bar/ocr.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/3rdparty/qwindowkitty/src/styles/window-bar/right-align-white.svg b/3rdparty/qwindowkitty/src/styles/window-bar/right-align-white.svg
deleted file mode 100644
index be51762f11..0000000000
--- a/3rdparty/qwindowkitty/src/styles/window-bar/right-align-white.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/3rdparty/qwindowkitty/src/styles/window-bar/right-align.svg b/3rdparty/qwindowkitty/src/styles/window-bar/right-align.svg
deleted file mode 100644
index 3ad85d0504..0000000000
--- a/3rdparty/qwindowkitty/src/styles/window-bar/right-align.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/TeXmacs/misc/images/images.qrc b/TeXmacs/misc/images/images.qrc
new file mode 100644
index 0000000000..eab0c22212
--- /dev/null
+++ b/TeXmacs/misc/images/images.qrc
@@ -0,0 +1,15 @@
+
+
+ ocr-button/left-align.svg
+ ocr-button/middle-align.svg
+ ocr-button/right-align.svg
+ ocr-button/ocr.svg
+
+
+
+ ocr-button/left-align-white.svg
+ ocr-button/middle-align-white.svg
+ ocr-button/right-align-white.svg
+ ocr-button/ocr-white.svg
+
+
\ No newline at end of file
diff --git a/TeXmacs/misc/images/ocr-button/left-align-white.svg b/TeXmacs/misc/images/ocr-button/left-align-white.svg
new file mode 100644
index 0000000000..002d21b022
--- /dev/null
+++ b/TeXmacs/misc/images/ocr-button/left-align-white.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/TeXmacs/misc/images/ocr-button/left-align.svg b/TeXmacs/misc/images/ocr-button/left-align.svg
new file mode 100644
index 0000000000..e63297a38a
--- /dev/null
+++ b/TeXmacs/misc/images/ocr-button/left-align.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/TeXmacs/misc/images/ocr-button/middle-align-white.svg b/TeXmacs/misc/images/ocr-button/middle-align-white.svg
new file mode 100644
index 0000000000..7c55d0603b
--- /dev/null
+++ b/TeXmacs/misc/images/ocr-button/middle-align-white.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/TeXmacs/misc/images/ocr-button/middle-align.svg b/TeXmacs/misc/images/ocr-button/middle-align.svg
new file mode 100644
index 0000000000..1ffc2c05b6
--- /dev/null
+++ b/TeXmacs/misc/images/ocr-button/middle-align.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/TeXmacs/misc/images/ocr-button/ocr-white.svg b/TeXmacs/misc/images/ocr-button/ocr-white.svg
new file mode 100644
index 0000000000..bd66c33daf
--- /dev/null
+++ b/TeXmacs/misc/images/ocr-button/ocr-white.svg
@@ -0,0 +1,26 @@
+
+
+
\ No newline at end of file
diff --git a/TeXmacs/misc/images/ocr-button/ocr.svg b/TeXmacs/misc/images/ocr-button/ocr.svg
new file mode 100644
index 0000000000..e5686f3891
--- /dev/null
+++ b/TeXmacs/misc/images/ocr-button/ocr.svg
@@ -0,0 +1,26 @@
+
+
+
\ No newline at end of file
diff --git a/TeXmacs/misc/images/ocr-button/right-align-white.svg b/TeXmacs/misc/images/ocr-button/right-align-white.svg
new file mode 100644
index 0000000000..a06c661af7
--- /dev/null
+++ b/TeXmacs/misc/images/ocr-button/right-align-white.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/TeXmacs/misc/images/ocr-button/right-align.svg b/TeXmacs/misc/images/ocr-button/right-align.svg
new file mode 100644
index 0000000000..4cf62a85d8
--- /dev/null
+++ b/TeXmacs/misc/images/ocr-button/right-align.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/TeXmacs/misc/themes/liii-night.css b/TeXmacs/misc/themes/liii-night.css
index cb91d85573..d0721fb778 100644
--- a/TeXmacs/misc/themes/liii-night.css
+++ b/TeXmacs/misc/themes/liii-night.css
@@ -670,19 +670,19 @@ QWidget#image_popup {
}
QToolButton#image-align-button[icon-name="left"] {
- qproperty-icon: url(":/window-bar/left-align-white.svg");
+ qproperty-icon: url(":/ocr-button/left-align-white.svg");
}
QToolButton#image-align-button[icon-name="center"] {
- qproperty-icon: url(":/window-bar/middle-align-white.svg");
+ qproperty-icon: url(":/ocr-button/middle-align-white.svg");
}
QToolButton#image-align-button[icon-name="right"] {
- qproperty-icon: url(":/window-bar/right-align-white.svg");
+ qproperty-icon: url(":/ocr-button/right-align-white.svg");
}
QToolButton#image-align-button[icon-name="ocr"] {
- qproperty-icon: url(":/window-bar/ocr-white.svg");
+ qproperty-icon: url(":/ocr-button/ocr-white.svg");
}
/*图片悬浮菜单按钮样式*/
diff --git a/TeXmacs/misc/themes/liii.css b/TeXmacs/misc/themes/liii.css
index 5d2ae28f5a..7be023fa31 100644
--- a/TeXmacs/misc/themes/liii.css
+++ b/TeXmacs/misc/themes/liii.css
@@ -678,19 +678,19 @@ QWidget#image_popup {
}
QToolButton#image-align-button[icon-name="left"] {
- qproperty-icon: url(":/window-bar/left-align.svg");
+ qproperty-icon: url(":/ocr-button/left-align.svg");
}
QToolButton#image-align-button[icon-name="center"] {
- qproperty-icon: url(":/window-bar/middle-align.svg");
+ qproperty-icon: url(":/ocr-button/middle-align.svg");
}
QToolButton#image-align-button[icon-name="right"] {
- qproperty-icon: url(":/window-bar/right-align.svg");
+ qproperty-icon: url(":/ocr-button/right-align.svg");
}
QToolButton#image-align-button[icon-name="ocr"] {
- qproperty-icon: url(":/window-bar/ocr.svg");
+ qproperty-icon: url(":/ocr-button/ocr.svg");
}
/*图片悬浮菜单按钮样式*/
diff --git a/devel/201_37.md b/devel/201_37.md
index 3bb5da7655..db8c830db1 100644
--- a/devel/201_37.md
+++ b/devel/201_37.md
@@ -17,6 +17,10 @@
+ 修复之后,期望鼠标移入图片范围后,菜单仅出现一次,且出现的菜单尺寸是经过调整的,与当前页面缩放相适应
+## 2025/12/27 修改图标
+### What
+更换了图片位置,更改了图标
+
## 2025/12/26 图片悬浮菜单渲染修复
### What
diff --git a/src/Plugins/Qt/QTMImagePopup.cpp b/src/Plugins/Qt/QTMImagePopup.cpp
index d9e87e75ff..84fd7ceb50 100644
--- a/src/Plugins/Qt/QTMImagePopup.cpp
+++ b/src/Plugins/Qt/QTMImagePopup.cpp
@@ -1,8 +1,8 @@
/******************************************************************************
- * MODULE : QTMMathCompletionPopup.cpp
+ * MODULE : QTMImagePopup.cpp
* DESCRIPTION:
- * COPYRIGHT : (C) 2025 Mogan STEM authors
+ * COPYRIGHT : (C) 2025 MoonLL, Yuki Lu
*******************************************************************************
* This software falls under the GNU general public license version 3 or later.
* It comes WITHOUT ANY WARRANTY WHATSOEVER. For details, see the file LICENSE
@@ -22,8 +22,10 @@ const string left_str = "\"left\"";
const string mid_str = "\"center\"";
const string right_str= "\"right\"";
+// 悬浮菜单创建函数
QTMImagePopup::QTMImagePopup (QWidget* parent, qt_simple_widget_rep* owner)
: QWidget (parent), owner (owner), layout (nullptr) {
+ Q_INIT_RESOURCE (images);
setObjectName ("image_popup");
setWindowFlags (Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
setAttribute (Qt::WA_ShowWithoutActivating);
@@ -34,7 +36,7 @@ QTMImagePopup::QTMImagePopup (QWidget* parent, qt_simple_widget_rep* owner)
layout->setSizeConstraint (QLayout::SetMinimumSize);
layout->setSpacing (1);
setLayout (layout);
- // 阴影效果
+
QGraphicsDropShadowEffect* effect= new QGraphicsDropShadowEffect (this);
effect->setBlurRadius (40);
effect->setOffset (0, 4);
@@ -44,22 +46,18 @@ QTMImagePopup::QTMImagePopup (QWidget* parent, qt_simple_widget_rep* owner)
leftBtn= new QToolButton ();
leftBtn->setObjectName ("image-align-button");
leftBtn->setProperty ("icon-name", "left");
- leftBtn->setIcon (QIcon (":/window-bar/left-align.svg"));
leftBtn->setCheckable (true);
middleBtn= new QToolButton ();
middleBtn->setObjectName ("image-align-button");
middleBtn->setProperty ("icon-name", "center");
- middleBtn->setIcon (QIcon (":/window-bar/middle-align.svg"));
middleBtn->setCheckable (true);
rightBtn= new QToolButton ();
rightBtn->setObjectName ("image-align-button");
rightBtn->setProperty ("icon-name", "right");
- rightBtn->setIcon (QIcon (":/window-bar/right-align.svg"));
rightBtn->setCheckable (true);
ocrBtn= new QToolButton ();
ocrBtn->setObjectName ("image-align-button");
ocrBtn->setProperty ("icon-name", "ocr");
- ocrBtn->setIcon (QIcon (":/window-bar/ocr.svg"));
QButtonGroup* alignGroup= new QButtonGroup (this);
alignGroup->addButton (leftBtn);
alignGroup->addButton (middleBtn);
@@ -89,6 +87,7 @@ QTMImagePopup::QTMImagePopup (QWidget* parent, qt_simple_widget_rep* owner)
QTMImagePopup::~QTMImagePopup () {}
+// 显示图片悬浮菜单,根据缩放比例决定是否显示
void
QTMImagePopup::showImagePopup (rectangle selr, double magf, int scroll_x,
int scroll_y, int canvas_x) {
@@ -135,6 +134,7 @@ QTMImagePopup::updatePosition () {
move (pos_x, pos_y);
}
+// 根据DPI缩放和图片缩放比例自动调整按钮大小和窗口尺寸
void
QTMImagePopup::autoSize () {
QScreen* Screen = QGuiApplication::primaryScreen ();
@@ -157,6 +157,7 @@ QTMImagePopup::autoSize () {
layout->update ();
}
+// 缓存菜单显示位置
void
QTMImagePopup::cachePosition (rectangle selr, double magf, int scroll_x,
int scroll_y, int canvas_x) {
@@ -168,6 +169,7 @@ QTMImagePopup::cachePosition (rectangle selr, double magf, int scroll_x,
cached_magf = magf;
}
+// 计算菜单显示位置
void
QTMImagePopup::getCachedPosition (int& x, int& y) {
x= ((cached_image_mid_x - cached_scroll_x - 500) * cached_magf +
diff --git a/src/Plugins/Qt/QTMImagePopup.hpp b/src/Plugins/Qt/QTMImagePopup.hpp
index 3fd68ede7c..0fb5079053 100644
--- a/src/Plugins/Qt/QTMImagePopup.hpp
+++ b/src/Plugins/Qt/QTMImagePopup.hpp
@@ -1,8 +1,8 @@
/******************************************************************************
- * MODULE : QTMMathCompletionPopup.hpp
+ * MODULE : QTMImagePopup.hpp
* DESCRIPTION:
- * COPYRIGHT : (C) 2025 Mogan STEM authors
+ * COPYRIGHT : (C) 2025 MoonLL, Yuki Lu
*******************************************************************************
* This software falls under the GNU general public license version 3 or later.
* It comes WITHOUT ANY WARRANTY WHATSOEVER. For details, see the file LICENSE
diff --git a/xmake.lua b/xmake.lua
index fb7d1565bb..6ba833ff7e 100644
--- a/xmake.lua
+++ b/xmake.lua
@@ -804,6 +804,10 @@ target("libmogan") do
add_files("src/Plugins/Qt/**.cpp", "src/Plugins/Qt/**.hpp")
+ -- Add Qt resource file
+ add_rules("qt.qrc")
+ add_files("TeXmacs/misc/images/images.qrc")
+
if is_plat("macosx") then
plugin_macos_srcs = {
"$(projectdir)/src/Plugins/MacOS/HIDRemote.m",