diff options
author | Felix Geyer <debfx@fobos.de> | 2012-05-27 21:43:34 +0400 |
---|---|---|
committer | Felix Geyer <debfx@fobos.de> | 2012-05-27 21:43:34 +0400 |
commit | 3f4f9abb369233a6dbc255ad0a25d8aa4e6ea680 (patch) | |
tree | b27b609036df1bf1fb1cb1813e1acf4ebb88e37e /src/gui/LineEdit.cpp | |
parent | adbce87ccd8e595b51dadf102eb2fe631fbcc2b2 (diff) |
Support RTL layout in LineEdit.
Diffstat (limited to 'src/gui/LineEdit.cpp')
-rw-r--r-- | src/gui/LineEdit.cpp | 55 |
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) |