Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Geyer <debfx@fobos.de>2012-05-27 21:43:34 +0400
committerFelix Geyer <debfx@fobos.de>2012-05-27 21:43:34 +0400
commit3f4f9abb369233a6dbc255ad0a25d8aa4e6ea680 (patch)
treeb27b609036df1bf1fb1cb1813e1acf4ebb88e37e /src/gui/LineEdit.cpp
parentadbce87ccd8e595b51dadf102eb2fe631fbcc2b2 (diff)
Support RTL layout in LineEdit.
Diffstat (limited to 'src/gui/LineEdit.cpp')
-rw-r--r--src/gui/LineEdit.cpp55
1 files changed, 41 insertions, 14 deletions
diff --git a/src/gui/LineEdit.cpp b/src/gui/LineEdit.cpp
index e344899c6..89b420471 100644
--- a/src/gui/LineEdit.cpp
+++ b/src/gui/LineEdit.cpp
@@ -1,16 +1,26 @@
-/****************************************************************************
-**
-** Copyright (c) 2007 Trolltech ASA <info@trolltech.com>
-**
-** Use, modification and distribution is allowed without limitation,
-** warranty, liability or support of any kind.
-**
-****************************************************************************/
+/*
+ * Copyright (C) 2007 Trolltech ASA <info@trolltech.com>
+ * Copyright (C) 2012 Felix Geyer <debfx@fobos.de>
+ * Copyright (C) 2012 Florian Geyer <blueice@fobos.de>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
#include "LineEdit.h"
-#include <QtGui/QToolButton>
#include <QtGui/QStyle>
+#include <QtGui/QToolButton>
#include "core/DataPath.h"
@@ -19,7 +29,18 @@ LineEdit::LineEdit(QWidget* parent)
{
m_clearButton = new QToolButton(this);
m_clearButton->setObjectName("clearButton");
- QIcon icon = dataPath()->icon("actions", "edit-clear-locationbar-rtl");
+
+ QIcon icon;
+ QString iconNameDirected = QString("edit-clear-locationbar-").append(
+ (layoutDirection() == Qt::LeftToRight) ? "rtl" : "ltr");
+ icon = QIcon::fromTheme(iconNameDirected);
+ if (icon.isNull()) {
+ icon = QIcon::fromTheme("edit-clear");
+ if (icon.isNull()) {
+ icon = dataPath()->icon("actions", iconNameDirected, false);
+ }
+ }
+
m_clearButton->setIcon(icon);
m_clearButton->setCursor(Qt::ArrowCursor);
m_clearButton->setStyleSheet("QToolButton { border: none; padding: 0px; }");
@@ -36,12 +57,18 @@ LineEdit::LineEdit(QWidget* parent)
void LineEdit::resizeEvent(QResizeEvent* event)
{
- Q_UNUSED(event);
-
QSize sz = m_clearButton->sizeHint();
int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
- m_clearButton->move(rect().right() - frameWidth - sz.width(),
- (rect().bottom() + 1 - sz.height())/2);
+ int y = (rect().bottom() + 1 - sz.height()) / 2;
+
+ if (layoutDirection() == Qt::LeftToRight) {
+ m_clearButton->move(rect().right() - frameWidth - sz.width(), y);
+ }
+ else {
+ m_clearButton->move(rect().left() + frameWidth, y);
+ }
+
+ QLineEdit::resizeEvent(event);
}
void LineEdit::updateCloseButton(const QString& text)