fix(FluColorPicker): 修复多项颜色同步与输入问题

- 修复了 FluColorPicker 打开时滑块与 RGBA/HEX 数值未正确匹配当前颜色的问题。
- 修复了 FluColorPicker 设置 HEX 值时,RGBA 数值未同步更新的问题。
- 修复了 FluColorPicker HEX 输入框只能接受大写 A-F 字符的问题。
This commit is contained in:
luckyloogn 2025-01-01 17:20:39 +08:00
parent 1a8e3d5ab2
commit 444d9b2d28
2 changed files with 70 additions and 4 deletions

View File

@ -47,6 +47,17 @@ Button{
implicitWidth: 326
implicitHeight: 560
closePolicy: Popup.CloseOnEscape
onClosed: {
text_box_r.focus = false;
text_box_g.focus = false;
text_box_b.focus = false;
text_box_a.focus = false;
text_box_color.focus = false;
}
onOpened: {
layout_color_hue.updateColorText(current);
text_box_color.textEdited();
}
Rectangle{
id:layout_actions
width: parent.width
@ -148,7 +159,9 @@ Button{
if(color.a===1){
colorString = "FF"+colorString
}
text_box_color.text = colorString.toUpperCase()
if (!text_box_color.activeFocus) {
text_box_color.text = colorString.toUpperCase();
}
}
property color blackColor: {
var c = whiteColor
@ -279,6 +292,11 @@ Button{
preventStealing: true
function handleMouse(mouse) {
if (mouse.buttons & Qt.LeftButton) {
text_box_r.focus = false;
text_box_g.focus = false;
text_box_b.focus = false;
text_box_a.focus = false;
text_box_color.focus = false;
pickerCursor.x = Math.max(0,Math.min(mouse.x - colorHandleRadius,width-2*colorHandleRadius));
pickerCursor.y = Math.max(0,Math.min(mouse.y - colorHandleRadius,height-2*colorHandleRadius));
}
@ -369,6 +387,11 @@ Button{
preventStealing: true
function handleMouse(mouse) {
if (mouse.buttons & Qt.LeftButton) {
text_box_r.focus = false;
text_box_g.focus = false;
text_box_b.focus = false;
text_box_a.focus = false;
text_box_color.focus = false;
blackCursor.x = Math.max(0,Math.min(mouse.x - 6,width-2*6));
blackCursor.y = 0
}
@ -438,6 +461,11 @@ Button{
preventStealing: true
function handleMouse(mouse) {
if (mouse.buttons & Qt.LeftButton) {
text_box_r.focus = false;
text_box_g.focus = false;
text_box_b.focus = false;
text_box_a.focus = false;
text_box_color.focus = false;
opacityCursor.x = Math.max(0,Math.min(mouse.x - 6,width-2*6));
opacityCursor.y = 0
}
@ -472,7 +500,7 @@ Button{
id:text_box_color
width: 136
validator: RegularExpressionValidator {
regularExpression: /^[0-9A-F]{8}$/
regularExpression: /^[0-9A-Fa-f]{8}$/
}
anchors{
right: parent.right
@ -495,6 +523,11 @@ Button{
parseInt(colorString.substring(6, 8), 16) / 255,
parseInt(colorString.substring(0, 2), 16) / 255)
layout_color_hue.colorValue = c
layout_color_hue.updateColorText(c);
text_box_r.textEdited();
text_box_g.textEdited();
text_box_b.textEdited();
text_box_a.textEdited();
}
}
}

View File

@ -48,6 +48,17 @@ Button{
implicitWidth: 326
implicitHeight: 560
closePolicy: Popup.CloseOnEscape
onClosed: {
text_box_r.focus = false;
text_box_g.focus = false;
text_box_b.focus = false;
text_box_a.focus = false;
text_box_color.focus = false;
}
onOpened: {
layout_color_hue.updateColorText(current);
text_box_color.textEdited();
}
Rectangle{
id:layout_actions
width: parent.width
@ -149,7 +160,9 @@ Button{
if(color.a===1){
colorString = "FF"+colorString
}
text_box_color.text = colorString.toUpperCase()
if (!text_box_color.activeFocus) {
text_box_color.text = colorString.toUpperCase();
}
}
property color blackColor: {
var c = whiteColor
@ -280,6 +293,11 @@ Button{
preventStealing: true
function handleMouse(mouse) {
if (mouse.buttons & Qt.LeftButton) {
text_box_r.focus = false;
text_box_g.focus = false;
text_box_b.focus = false;
text_box_a.focus = false;
text_box_color.focus = false;
pickerCursor.x = Math.max(0,Math.min(mouse.x - colorHandleRadius,width-2*colorHandleRadius));
pickerCursor.y = Math.max(0,Math.min(mouse.y - colorHandleRadius,height-2*colorHandleRadius));
}
@ -370,6 +388,11 @@ Button{
preventStealing: true
function handleMouse(mouse) {
if (mouse.buttons & Qt.LeftButton) {
text_box_r.focus = false;
text_box_g.focus = false;
text_box_b.focus = false;
text_box_a.focus = false;
text_box_color.focus = false;
blackCursor.x = Math.max(0,Math.min(mouse.x - 6,width-2*6));
blackCursor.y = 0
}
@ -439,6 +462,11 @@ Button{
preventStealing: true
function handleMouse(mouse) {
if (mouse.buttons & Qt.LeftButton) {
text_box_r.focus = false;
text_box_g.focus = false;
text_box_b.focus = false;
text_box_a.focus = false;
text_box_color.focus = false;
opacityCursor.x = Math.max(0,Math.min(mouse.x - 6,width-2*6));
opacityCursor.y = 0
}
@ -473,7 +501,7 @@ Button{
id:text_box_color
width: 136
validator: RegularExpressionValidator {
regularExpression: /^[0-9A-F]{8}$/
regularExpression: /^[0-9A-Fa-f]{8}$/
}
anchors{
right: parent.right
@ -496,6 +524,11 @@ Button{
parseInt(colorString.substring(6, 8), 16) / 255,
parseInt(colorString.substring(0, 2), 16) / 255)
layout_color_hue.colorValue = c
layout_color_hue.updateColorText(c);
text_box_r.textEdited();
text_box_g.textEdited();
text_box_b.textEdited();
text_box_a.textEdited();
}
}
}