Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37883598
en ru br
ALT Linux repos
S:23.04.3-alt1

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


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
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin