The tooltip in the bug is actually not one, but the VCL implementation of Gtk's popover widget triggered by SalFrame::ShowPopover. This has no Qt equivalent, so we currently rely on the crude VCL version. But for this maGeometry must contain the correct information, AKA the absolute, unmirrored, paintable system geometry of the frame. Then the window can be positioned correctly. The patch gets rid of most of the code initially copied from gtk, when this VCL backend was in a very early state. Change-Id: Id44e4dc2aac41f1f01d51c4d8107892e644ef243 Reviewed-on: https://gerrit.libreoffice.org/74546 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
*/
|
|
|
|
#include <Qt5MainWindow.hxx>
|
|
#include <Qt5MainWindow.moc>
|
|
#include <Qt5AccessibleWidget.hxx>
|
|
|
|
#include <QtGui/QAccessible>
|
|
#include <QtGui/QCloseEvent>
|
|
|
|
Qt5MainWindow::Qt5MainWindow(Qt5Frame& rFrame, QWidget* parent, Qt::WindowFlags f)
|
|
: QMainWindow(parent, f)
|
|
, m_rFrame(rFrame)
|
|
{
|
|
QAccessible::installFactory(Qt5AccessibleWidget::customFactory);
|
|
}
|
|
|
|
void Qt5MainWindow::closeEvent(QCloseEvent* pEvent)
|
|
{
|
|
bool bRet = false;
|
|
bRet = m_rFrame.CallCallback(SalEvent::Close, nullptr);
|
|
|
|
if (bRet)
|
|
pEvent->accept();
|
|
// SalEvent::Close returning false may mean that user has vetoed
|
|
// closing the frame ("you have unsaved changes" dialog for example)
|
|
// We shouldn't process the event in such case
|
|
else
|
|
pEvent->ignore();
|
|
}
|
|
|
|
void Qt5MainWindow::moveEvent(QMoveEvent* pEvent)
|
|
{
|
|
m_rFrame.maGeometry.nX = pEvent->pos().x();
|
|
m_rFrame.maGeometry.nY = pEvent->pos().y();
|
|
m_rFrame.CallCallback(SalEvent::Move, nullptr);
|
|
}
|