Group :: Education
RPM: kde5-kbruch
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
Patch: Fix-incorrect-display-of-user-interface-elements-alt.patch
Download
Download
From 21b57c8329599ff154229c544e04c79d1d2c67a0 Mon Sep 17 00:00:00 2001
From: Pavel Moseev <mars@altlinux.org>
Date: Fri, 1 Nov 2019 15:04:59 +0300
Subject: [PATCH] Fix incorrect display of user interface elements
Change some user interface elements to better display them when changing the program locale. (closes: #37308)
Add maximize window to full screen.
Ignore DPI changes in system settings.
Fix redrawing user interface elements after turning tooltip on or off.
---
src/FractionPainter.cpp | 2 +-
src/FractionRingWidget.cpp | 80 +++++++++++++++++++++++--------
2 files changed, 61 insertions(+), 21 deletions(-)
diff --git a/src/FractionPainter.cpp b/src/FractionPainter.cpp
index 777d862..5f7550e 100644
--- a/src/FractionPainter.cpp
+++ b/src/FractionPainter.cpp
@@ -68,7 +68,7 @@ void FractionPainter::paintWidget(QPainter & paint)
int old_y = 0;
// ratios and operation signs are painted with the same font
- m_font.setPointSize(24);
+ m_font.setPixelSize(24);
m_font.setBold(true);
paint.setFont(m_font);
diff --git a/src/FractionRingWidget.cpp b/src/FractionRingWidget.cpp
index 586e0df..074f02e 100644
--- a/src/FractionRingWidget.cpp
+++ b/src/FractionRingWidget.cpp
@@ -49,8 +49,8 @@
#include "settingsclass.h"
#include "TaskColors.h"
-#define MARG_LEFT 10
-#define MARG_TOP 70
+#define MARG_LEFT 20
+#define MARG_TOP 10
/* constructor */
FractionRingWidget::FractionRingWidget()
@@ -64,6 +64,9 @@ FractionRingWidget::FractionRingWidget()
setCaption(i18n("Learning"));
+ QFont defaultFont;
+ defaultFont.setPixelSize(16); // Ignore DPI changes
+
layout1 = new QGridLayout();
layout1->setObjectName(QStringLiteral("layout1"));
@@ -74,7 +77,7 @@ FractionRingWidget::FractionRingWidget()
interfaceWidget = new QWidget(this);
interfaceWidget->setObjectName(QStringLiteral("interfaceWidget"));
- interfaceWidget->setFixedSize(QSize(270, 300));
+ interfaceWidget->setFixedSize(QSize(270, 240));
gridLayout = new QGridLayout();
gridLayout->setObjectName(QStringLiteral("gridLayout"));
@@ -99,7 +102,7 @@ FractionRingWidget::FractionRingWidget()
colorListRight[4] = QColor(255, 186, 190);
// 742, 520
- setFixedSize(QSize(742, 520));
+ setMinimumSize(850, 600);
setPalette(QPalette(bgColor));
setAutoFillBackground(true);
@@ -115,11 +118,13 @@ FractionRingWidget::FractionRingWidget()
leftInfoLabel = new QLabel(this);
leftInfoLabel->setObjectName(QStringLiteral("leftInfoLabel"));
leftInfoLabel->setText(i18nc("Expands the ratio shown on the left by the given factor. Please note, expanding is not the same as multiplying. For example, expanding a ratio by 2 basically means multiplying the ratio with 2/2 and not with 2/1!", "Expand"));
+ leftInfoLabel->setFont(defaultFont);
gridLayout->addWidget(leftInfoLabel, 1, 0, Qt::AlignCenter);
rightInfoLabel = new QLabel(this);
rightInfoLabel->setObjectName(QStringLiteral("rightInfoLabel"));
rightInfoLabel->setText(i18nc("Expands the ratio shown on the left by the given factor. Please note, expanding is not the same as multiplying. For example, expanding a ratio by 2 basically means multiplying the ratio with 2/2 and not with 2/1!", "Expand"));
+ rightInfoLabel->setFont(defaultFont);
gridLayout->addWidget(rightInfoLabel, 1, 1, Qt::AlignCenter);
// SpinBox -----------------------------------------
@@ -128,6 +133,7 @@ FractionRingWidget::FractionRingWidget()
leftSpinBox->setRange(1, 6);
leftSpinBox->setMaximumWidth(50);
leftSpinBox->setMinimumWidth(50);
+ leftSpinBox->setFont(defaultFont);
gridLayout->addWidget(leftSpinBox, 2, 0, Qt::AlignTop | Qt::AlignHCenter);
rightSpinBox = new QSpinBox(this);
@@ -135,6 +141,7 @@ FractionRingWidget::FractionRingWidget()
rightSpinBox->setRange(1, 6);
rightSpinBox->setMaximumWidth(50);
rightSpinBox->setMinimumWidth(50);
+ rightSpinBox->setFont(defaultFont);
gridLayout->addWidget(rightSpinBox, 2, 1, Qt::AlignTop | Qt::AlignHCenter);
QObject::connect(leftSpinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &FractionRingWidget::slotLeftSpinBoxValueChanged);
@@ -144,19 +151,20 @@ FractionRingWidget::FractionRingWidget()
resetButton = new QPushButton(this);
resetButton->setObjectName(QStringLiteral("resetButton"));
resetButton->setText(i18n("New"));
- resetButton->setMaximumWidth(70);
+ resetButton->setMinimumWidth(150);
+ resetButton->setFont(defaultFont);
gridLayout->addWidget(resetButton, 3, 0, 1, 2, Qt::AlignCenter);
QObject::connect(resetButton, &QPushButton::clicked, this, &FractionRingWidget::NewTask);
// grid row settings --------------------------------
- gridLayout->setRowMinimumHeight(0, 185);
- gridLayout->setRowMinimumHeight(1, 10);
- gridLayout->setRowMinimumHeight(2, 15);
- gridLayout->setRowMinimumHeight(3, 85);
+ gridLayout->setRowMinimumHeight(0, 85);
+ gridLayout->setRowMinimumHeight(1, 5);
+ gridLayout->setRowMinimumHeight(2, 55);
+ gridLayout->setRowMinimumHeight(3, 50);
interfaceWidget->setLayout(gridLayout);
- layout1->addWidget(interfaceWidget, 1, 0, Qt::AlignTop | Qt::AlignHCenter);
+ layout1->addWidget(interfaceWidget, 1, 0, Qt::AlignVCenter | Qt::AlignHCenter);
// textedit -----------------------------------------
textMsg = new QTextEdit(this);
@@ -165,15 +173,16 @@ FractionRingWidget::FractionRingWidget()
textMsg->setReadOnly(true);
textMsg->setPalette(QPalette(QColor(255, 255, 255)));
textMsg->setAutoFillBackground(true);
- layout1->addWidget(textMsg, 0, 1, 2, 1, Qt::AlignCenter);
+ textMsg->setFont(defaultFont);
+ layout1->addWidget(textMsg, 0, 1, 2, 1, Qt::AlignVCenter| Qt::AlignHCenter);
// grid row settings --------------------------------
- layout1->setRowMinimumHeight(0, MARG_TOP - 20);
+ layout1->setRowMinimumHeight(0, MARG_TOP - 5);
layout1->setRowMinimumHeight(1, 370 - MARG_TOP);
// grid column settings -----------------------------
- layout1->setColumnMinimumWidth(0, 460 + MARG_LEFT);
- layout1->setColumnMinimumWidth(1, 282 - MARG_LEFT);
+ layout1->setColumnMinimumWidth(0, 488 + MARG_LEFT);
+ layout1->setColumnMinimumWidth(1, 325 - MARG_LEFT);
baseWidget->setLayout(layout1);
@@ -194,10 +203,14 @@ void FractionRingWidget::setupActions()
#ifdef DEBUG
qDebug() << QStringLiteral("setupActions FractionRingWidget");
#endif
+ QFont defaultFont;
+ defaultFont.setPixelSize(17); // Ignore DPI changes
+
// new task action
m_NewTaskAction = new QWidgetAction(this);
m_NewTaskAction->setText(i18nc("@action opens a new question", "&New"));
m_NewTaskAction->setIcon(QIcon::fromTheme(QStringLiteral("document-new")));
+ m_NewTaskAction->setFont(defaultFont);
actionCollection()->addAction(QStringLiteral("NewTask"), m_NewTaskAction);
actionCollection()->setDefaultShortcuts(m_NewTaskAction, KStandardShortcut::shortcut(KStandardShortcut::New));
connect(m_NewTaskAction, &QAction::triggered, this, &FractionRingWidget::NewTask);
@@ -206,12 +219,14 @@ void FractionRingWidget::setupActions()
m_BackAction = new QWidgetAction(this);
m_BackAction->setText(i18nc("@action go to the main screen", "Back"));
m_BackAction->setIcon(QIcon::fromTheme(QStringLiteral("go-previous")));
+ m_BackAction->setFont(defaultFont);
actionCollection()->addAction(QStringLiteral("Back"), m_BackAction);
actionCollection()->setDefaultShortcuts(m_BackAction, KStandardShortcut::shortcut(KStandardShortcut::Back));
connect(m_BackAction, &QAction::triggered, this, &FractionRingWidget::GoBack);
// hint action (hide it as it doesn't exist here)
m_HintAction = new QAction(QIcon::fromTheme(QStringLiteral("games-hint")), i18nc("@action opens hint", "Hint"), this);
+ m_HintAction->setFont(defaultFont);
actionCollection()->addAction(QStringLiteral("Hint"), m_HintAction);
connect(m_HintAction, &QAction::triggered, this, &FractionRingWidget::Hint);
@@ -269,7 +284,20 @@ void FractionRingWidget::paintEvent(QPaintEvent *)
painter.setPen(penBorder);
painter.setBrush(bgOutsideRing);
- QRectF rect(MARG_LEFT, MARG_TOP, 440, 440);
+ int interfaceWidgetLeft = interfaceWidget->geometry().left();
+ int interfaceWidgetTop = interfaceWidget->geometry().top();
+
+ int offsetX = 0; // offset for all Rings
+ int offsetY = 0;
+ int d1 = 470; // Outside Ring Diameter
+ int outsideOffsetX = interfaceWidgetLeft + MARG_LEFT - 117; // outside offset
+ int outsideOffsetY = interfaceWidgetTop + MARG_TOP - 50;
+ int centerCoordX = d1*0.5 + outsideOffsetX; // Ring center coordinates
+ int centerCoordY = d1*0.5 + outsideOffsetY;
+
+ QRectF rect(outsideOffsetX, outsideOffsetY, d1, d1);
+
+ update();
int startAngle = 90 * 16;
int spanAngle = 0;
@@ -293,15 +321,23 @@ void FractionRingWidget::paintEvent(QPaintEvent *)
}
// Spacer Ring -------------------------------
+ int d2 = 414; // Spacer Ring Diameter
+ offsetX = centerCoordX - d2*0.5;
+ offsetY = centerCoordY - d2*0.5;
+
painter.setPen(penBorder);
painter.setBrush(bgColor);
- rect.setRect(MARG_LEFT + 27, MARG_TOP + 27, 386, 386);
+ rect.setRect(offsetX, offsetY, d2, d2);
painter.drawEllipse(rect);
// Inside Ring -------------------------------
+ int d3 = 400; // Inside Ring Diameter
+ offsetX = centerCoordX - d3*0.5;
+ offsetY = centerCoordY - d3*0.5;
+
painter.setPen(penBorder);
painter.setBrush(bgInsideRing);
- rect.setRect(MARG_LEFT + 33, MARG_TOP + 33, 374, 374);
+ rect.setRect(offsetX, offsetY, d3, d3);
painter.drawEllipse(rect);
painter.setPen(penBorder);
@@ -320,9 +356,13 @@ void FractionRingWidget::paintEvent(QPaintEvent *)
}
// Inside Area -------------------------------
+ int d4 = 344; // Inside Area Diameter
+ offsetX = centerCoordX - d4*0.5;
+ offsetY = centerCoordY - d4*0.5;
+
painter.setPen(penBorder);
painter.setBrush(QColor(230, 230, 240));
- rect.setRect(MARG_LEFT + 60, MARG_TOP + 60, 320, 320);
+ rect.setRect(offsetX, offsetY, d4, d4);
painter.drawEllipse(rect);
// left mold ---------------------------------
@@ -330,14 +370,14 @@ void FractionRingWidget::paintEvent(QPaintEvent *)
pen.setWidth(2);
painter.setPen(pen);
painter.setBrush(QColor(205, 225, 240, 150));
- rect.setRect(MARG_LEFT + 118, MARG_TOP + 120, 80, 160);
+ rect.setRect(outsideOffsetX + 112, outsideOffsetY + 127, 105, 160);
painter.drawRect(rect);
// right mold --------------------------------
pen.setColor(bgInsideMold);
painter.setPen(pen);
painter.setBrush(QColor(240, 210, 160));
- rect.setRect(MARG_LEFT + 252, MARG_TOP + 120, 80, 160);
+ rect.setRect(outsideOffsetX + 246, outsideOffsetY + 127, 106, 160);
painter.drawRect(rect);
}
--
2.21.0