From 67cefc8d54957019e942c796ca32133e50172ffb Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 2 Sep 2014 13:12:52 -0700 Subject: [PATCH] Reduce height of RunningScripts so titlebar is inside main window --- interface/src/ui/RunningScriptsWidget.cpp | 6 ++++- libraries/shared/src/UIUtil.cpp | 29 +++++++++++++++++++++++ libraries/shared/src/UIUtil.h | 24 +++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 libraries/shared/src/UIUtil.cpp create mode 100644 libraries/shared/src/UIUtil.h diff --git a/interface/src/ui/RunningScriptsWidget.cpp b/interface/src/ui/RunningScriptsWidget.cpp index ee04c68b14..7f3428784b 100644 --- a/interface/src/ui/RunningScriptsWidget.cpp +++ b/interface/src/ui/RunningScriptsWidget.cpp @@ -22,6 +22,7 @@ #include "Application.h" #include "Menu.h" #include "ScriptsModel.h" +#include "UIUtil.h" RunningScriptsWidget::RunningScriptsWidget(QWidget* parent) : QWidget(parent, Qt::Window | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | @@ -154,7 +155,10 @@ void RunningScriptsWidget::showEvent(QShowEvent* event) { } const QRect parentGeometry = parentWidget()->geometry(); - setGeometry(parentGeometry.topLeft().x(), parentGeometry.topLeft().y(), size().width(), parentWidget()->height()); + int titleBarHeight = UIUtil::getWindowTitleBarHeight(this); + + setGeometry(parentGeometry.topLeft().x(), parentGeometry.topLeft().y() + titleBarHeight, + size().width(), parentWidget()->height() - titleBarHeight); QWidget::showEvent(event); } diff --git a/libraries/shared/src/UIUtil.cpp b/libraries/shared/src/UIUtil.cpp new file mode 100644 index 0000000000..82c41e42c8 --- /dev/null +++ b/libraries/shared/src/UIUtil.cpp @@ -0,0 +1,29 @@ +// +// UIUtil.cpp +// library/shared/src +// +// Created by Ryan Huffman on 09/02/2014. +// Copyright 2014 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include +#include + +#include "UIUtil.h" + +int UIUtil::getWindowTitleBarHeight(QWidget *window) { + QStyleOptionTitleBar options; + options.titleBarState = 1; + options.titleBarFlags = Qt::Window; + int titleBarHeight = window->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options, window); + +#if defined(Q_OS_MAC) + // The height on OSX is 4 pixels too tall + titleBarHeight -= 4; +#endif + + return titleBarHeight; +} diff --git a/libraries/shared/src/UIUtil.h b/libraries/shared/src/UIUtil.h new file mode 100644 index 0000000000..3eeae9efbd --- /dev/null +++ b/libraries/shared/src/UIUtil.h @@ -0,0 +1,24 @@ +// +// UIUtil.h +// library/shared/src +// +// Created by Ryan Huffman on 09/02/2014. +// Copyright 2014 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + + +#ifndef hifi_UIUtil_h +#define hifi_UIUtil_h + +#include + +class UIUtil { +public: + static int getWindowTitleBarHeight(QWidget *window); + +}; + +#endif // hifi_UIUtil_h