┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Ernst <[email protected]>2020-11-11 15:40:14 +0100
committerFelix Ernst <[email protected]>2020-11-13 11:29:54 +0100
commit4f645f1b29f0f858b14eed5eca77bf941b52d150 (patch)
tree90d4a860b233fa2737d13a627ef4064ef1048784 /src
parent1208f86696bde5011f57b1b577d149a1013d2553 (diff)
Fix navigator alignment for right-to-left localizations
Diffstat (limited to 'src')
-rw-r--r--src/dolphinnavigatorswidgetaction.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/dolphinnavigatorswidgetaction.cpp b/src/dolphinnavigatorswidgetaction.cpp
index 984e1f35c..e0ae3132a 100644
--- a/src/dolphinnavigatorswidgetaction.cpp
+++ b/src/dolphinnavigatorswidgetaction.cpp
@@ -13,6 +13,7 @@
#include <KXMLGUIFactory>
#include <KXmlGuiWindow>
+#include <QApplication>
#include <QDomDocument>
#include <QHBoxLayout>
#include <QPushButton>
@@ -90,10 +91,20 @@ void DolphinNavigatorsWidgetAction::followViewContainersGeometry(
int globalXOfPrimary, int widthOfPrimary,
int globalXOfSecondary, int widthOfSecondary)
{
- m_globalXOfSplitter = m_splitter->mapToGlobal(QPoint(0,0)).x();
- m_globalXOfPrimary = globalXOfPrimary;
+ if (QApplication::layoutDirection() == Qt::LeftToRight) {
+ m_globalXOfSplitter = m_splitter->mapToGlobal(QPoint(0,0)).x();
+ m_globalXOfPrimary = globalXOfPrimary;
+ m_globalXOfSecondary = globalXOfSecondary;
+ } else {
+ // When the direction is reversed, globalX does not change.
+ // For the adjustSpacing() code to work we need globalX to measure from right to left
+ // and to measure up to the rightmost point of a widget instead of the leftmost.
+ m_globalXOfSplitter = (-1) * (m_splitter->mapToGlobal(QPoint(0,0)).x() + m_splitter->width());
+ m_globalXOfPrimary = (-1) * (globalXOfPrimary + widthOfPrimary);
+ m_globalXOfSecondary = (globalXOfSecondary == INT_MIN) ? INT_MIN :
+ (-1) * (globalXOfSecondary + widthOfSecondary);
+ }
m_widthOfPrimary = widthOfPrimary;
- m_globalXOfSecondary = globalXOfSecondary;
m_widthOfSecondary = widthOfSecondary;
adjustSpacing();
}