moved window logic from BaseWidget to BaseWindow

This commit is contained in:
fourtf
2018-01-14 21:55:36 +01:00
parent 8deb096a27
commit e19a83679f
17 changed files with 138 additions and 104 deletions
-56
View File
@@ -1,14 +1,12 @@
#include "widgets/basewidget.hpp"
#include "singletons/settingsmanager.hpp"
#include "singletons/thememanager.hpp"
#include "widgets/tooltipwidget.hpp"
#include <QDebug>
#include <QIcon>
#include <QLayout>
#include <QtGlobal>
#include <boost/signals2.hpp>
#include "util/nativeeventhelper.hpp"
namespace chatterino {
namespace widgets {
@@ -61,64 +59,10 @@ void BaseWidget::init()
});
}
void BaseWidget::initAsWindow()
{
this->setWindowIcon(QIcon(":/images/icon.png"));
this->isWindow = true;
#ifdef USEWINSDK
auto dpi = util::getWindowDpi(this->winId());
if (dpi) {
this->dpiMultiplier = dpi.value() / 96.f;
}
#endif
if (singletons::SettingManager::getInstance().windowTopMost.getValue()) {
this->setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint);
}
}
void BaseWidget::refreshTheme()
{
// Do any color scheme updates here
}
#ifdef USEWINSDK
bool BaseWidget::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
int dpi;
if (util::tryHandleDpiChangedMessage(message, dpi)) {
qDebug() << "dpi changed";
float oldDpiMultiplier = this->dpiMultiplier;
this->dpiMultiplier = dpi / 96.f;
float scale = this->dpiMultiplier / oldDpiMultiplier;
this->dpiMultiplierChanged(oldDpiMultiplier, this->dpiMultiplier);
this->resize(static_cast<int>(this->width() * scale),
static_cast<int>(this->height() * scale));
}
return QWidget::nativeEvent(eventType, message, result);
}
#endif
void BaseWidget::changeEvent(QEvent *)
{
if (this->isWindow) {
TooltipWidget::getInstance()->hide();
}
}
void BaseWidget::leaveEvent(QEvent *)
{
if (this->isWindow) {
TooltipWidget::getInstance()->hide();
}
}
} // namespace widgets
} // namespace chatterino