QColorDialog: Fix flickering when using "Pick screen color"

With non-monospaced fonts the dialog constantly resized itself when hovering
with the mouse.

This patch has the side effect of fixing another annoyance. Don't present duplicated
information to the user, the color name is already shown in the HTML line edit
and it's also updated dynamically.

Task-number: QTBUG-43448
Change-Id: Ieaeda2a5b876cf15391616aed7d30ed352b463df
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This commit is contained in:
Sérgio Martins 2014-12-26 12:56:11 +00:00
parent ebd7df6e57
commit 5b4f875e12
2 changed files with 13 additions and 7 deletions

View File

@ -1587,11 +1587,16 @@ void QColorDialogPrivate::_q_pickScreenColor()
buttons->setDisabled(true);
screenColorPickerButton->setDisabled(true);
q->setCurrentColor(grabScreenColor(QCursor::pos()));
lblScreenColorInfo->setText(QColorDialog::tr("Cursor at %1, %2, color: %3\nPress ESC to cancel")
.arg(QCursor::pos().x())
.arg(QCursor::pos().y())
.arg(q->currentColor().name()));
const QPoint globalPos = QCursor::pos();
q->setCurrentColor(grabScreenColor(globalPos));
updateColorLabelText(globalPos);
}
void QColorDialogPrivate::updateColorLabelText(const QPoint &globalPos)
{
lblScreenColorInfo->setText(QColorDialog::tr("Cursor at %1, %2\nPress ESC to cancel")
.arg(globalPos.x())
.arg(globalPos.y()));
}
void QColorDialogPrivate::releaseColorPicking()
@ -2196,8 +2201,8 @@ bool QColorDialogPrivate::handleColorPickingMouseMove(QMouseEvent *e)
// QTBUG-39792, do not change standard, custom color selectors while moving as
// otherwise it is not possible to pre-select a custom cell for assignment.
setCurrentColor(color, ShowColor);
lblScreenColorInfo->setText(QColorDialog::tr("Cursor at %1, %2, color: %3\nPress ESC to cancel")
.arg(globalPos.x()).arg(globalPos.y()).arg(color.name()));
updateColorLabelText(globalPos);
return true;
}

View File

@ -104,6 +104,7 @@ public:
void _q_newCustom(int, int);
void _q_newStandard(int, int);
void _q_pickScreenColor();
void updateColorLabelText(const QPoint &);
void releaseColorPicking();
bool handleColorPickingMouseMove(QMouseEvent *e);
bool handleColorPickingMouseButtonRelease(QMouseEvent *e);