summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2013-12-02 23:31:02 +0200
committerOrgad Shaneh <orgads@gmail.com>2013-12-09 11:13:55 +0100
commit0c0c1cd58ff0af2371ee7e5ead9b4a412e27f90e (patch)
treeb3e981c0a4d8e42a5106253a14cb6f48439ac40b
parent56c26fe6c01697ecd34d24c1800e5e981cf643a6 (diff)
downloadqt-creator-0c0c1cd58ff0af2371ee7e5ead9b4a412e27f90e.tar.gz
Utils: Export execMenuAtWidget
Change-Id: I77c89263746390a20dee90ff435db08f0e08f03e Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
-rw-r--r--src/libs/utils/execmenu.cpp71
-rw-r--r--src/libs/utils/execmenu.h47
-rw-r--r--src/libs/utils/fancylineedit.cpp32
-rw-r--r--src/libs/utils/utils-lib.pri6
-rw-r--r--src/libs/utils/utils.qbs2
5 files changed, 125 insertions, 33 deletions
diff --git a/src/libs/utils/execmenu.cpp b/src/libs/utils/execmenu.cpp
new file mode 100644
index 0000000000..b760132801
--- /dev/null
+++ b/src/libs/utils/execmenu.cpp
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#include "execmenu.h"
+
+#include <QApplication>
+#include <QDesktopWidget>
+#include <QMenu>
+#include <QPoint>
+#include <QRect>
+#include <QSize>
+#include <QWidget>
+
+namespace Utils {
+
+/*!
+ * Opens \a menu at the specified \a widget position.
+ * This function computes the position where to show the menu, and opens it with
+ * QMenu::exec().
+ */
+QAction *execMenuAtWidget(QMenu *menu, QWidget *widget)
+{
+ QPoint p;
+ QRect screen = qApp->desktop()->availableGeometry(widget);
+ QSize sh = menu->sizeHint();
+ QRect rect = widget->rect();
+ if (widget->isRightToLeft()) {
+ if (widget->mapToGlobal(QPoint(0, rect.bottom())).y() + sh.height() <= screen.height())
+ p = widget->mapToGlobal(rect.bottomRight());
+ else
+ p = widget->mapToGlobal(rect.topRight() - QPoint(0, sh.height()));
+ p.rx() -= sh.width();
+ } else {
+ if (widget->mapToGlobal(QPoint(0, rect.bottom())).y() + sh.height() <= screen.height())
+ p = widget->mapToGlobal(rect.bottomLeft());
+ else
+ p = widget->mapToGlobal(rect.topLeft() - QPoint(0, sh.height()));
+ }
+ p.rx() = qMax(screen.left(), qMin(p.x(), screen.right() - sh.width()));
+ p.ry() += 1;
+
+ return menu->exec(p);
+}
+
+} // namespace Utils
diff --git a/src/libs/utils/execmenu.h b/src/libs/utils/execmenu.h
new file mode 100644
index 0000000000..0a385c2d07
--- /dev/null
+++ b/src/libs/utils/execmenu.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#ifndef EXECMENU_H
+#define EXECMENU_H
+
+#include "utils_global.h"
+
+QT_BEGIN_NAMESPACE
+class QAction;
+class QMenu;
+class QWidget;
+QT_END_NAMESPACE
+
+namespace Utils {
+
+QTCREATOR_UTILS_EXPORT QAction *execMenuAtWidget(QMenu *menu, QWidget *widget);
+
+} // namespace Utils
+
+#endif // EXECMENU_H
diff --git a/src/libs/utils/fancylineedit.cpp b/src/libs/utils/fancylineedit.cpp
index d945852698..ed80be0ba0 100644
--- a/src/libs/utils/fancylineedit.cpp
+++ b/src/libs/utils/fancylineedit.cpp
@@ -27,14 +27,13 @@
**
****************************************************************************/
+#include "execmenu.h"
#include "fancylineedit.h"
#include "historycompleter.h"
#include "qtcassert.h"
#include <QAbstractItemView>
-#include <QApplication>
#include <QDebug>
-#include <QDesktopWidget>
#include <QKeyEvent>
#include <QMenu>
#include <QPainter>
@@ -42,35 +41,6 @@
#include <QStyle>
/*!
- * Opens \a menu at the specified \a widget position.
- * This function computes the position where to show the menu, and opens it with
- * QMenu::exec().
- */
-static void execMenuAtWidget(QMenu *menu, QWidget *widget)
-{
- QPoint p;
- QRect screen = qApp->desktop()->availableGeometry(widget);
- QSize sh = menu->sizeHint();
- QRect rect = widget->rect();
- if (widget->isRightToLeft()) {
- if (widget->mapToGlobal(QPoint(0, rect.bottom())).y() + sh.height() <= screen.height())
- p = widget->mapToGlobal(rect.bottomRight());
- else
- p = widget->mapToGlobal(rect.topRight() - QPoint(0, sh.height()));
- p.rx() -= sh.width();
- } else {
- if (widget->mapToGlobal(QPoint(0, rect.bottom())).y() + sh.height() <= screen.height())
- p = widget->mapToGlobal(rect.bottomLeft());
- else
- p = widget->mapToGlobal(rect.topLeft() - QPoint(0, sh.height()));
- }
- p.rx() = qMax(screen.left(), qMin(p.x(), screen.right() - sh.width()));
- p.ry() += 1;
-
- menu->exec(p);
-}
-
-/*!
\class Utils::FancyLineEdit
\brief The FancyLineEdit class is a line edit with an embedded pixmap on
diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri
index 97833eb8e7..2825a5661f 100644
--- a/src/libs/utils/utils-lib.pri
+++ b/src/libs/utils/utils-lib.pri
@@ -86,7 +86,8 @@ SOURCES += $$PWD/environment.cpp \
$$PWD/tooltip/tipcontents.cpp \
$$PWD/unixutils.cpp \
$$PWD/function.cpp \
- $$PWD/ansiescapecodehandler.cpp
+ $$PWD/ansiescapecodehandler.cpp \
+ $$PWD/execmenu.cpp
win32 {
SOURCES += \
@@ -180,7 +181,8 @@ HEADERS += \
$$PWD/unixutils.h \
$$PWD/qtcoverride.h \
$$PWD/function.h \
- $$PWD/ansiescapecodehandler.h
+ $$PWD/ansiescapecodehandler.h \
+ $$PWD/execmenu.h
FORMS += $$PWD/filewizardpage.ui \
$$PWD/projectintropage.ui \
diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs
index c40db11a3e..99174d119c 100644
--- a/src/libs/utils/utils.qbs
+++ b/src/libs/utils/utils.qbs
@@ -64,6 +64,8 @@ QtcLibrary {
"environment.h",
"environmentmodel.cpp",
"environmentmodel.h",
+ "execmenu.cpp",
+ "execmenu.h",
"faketooltip.cpp",
"faketooltip.h",
"fancylineedit.cpp",