2017-10-21 13:50:30 +00:00
|
|
|
/* -*- 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/.
|
|
|
|
*
|
|
|
|
* This file incorporates work covered by the following license notice:
|
|
|
|
*
|
|
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
|
|
* with this work for additional information regarding copyright
|
|
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
|
|
* except in compliance with the License. You may obtain a copy of
|
|
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
|
|
*/
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
#include "Qt5Frame.hxx"
|
2017-10-21 13:50:30 +00:00
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
#include "Qt5Tools.hxx"
|
|
|
|
#include "Qt5Instance.hxx"
|
|
|
|
#include "Qt5Graphics.hxx"
|
|
|
|
#include "Qt5Widget.hxx"
|
2017-10-30 19:32:45 +01:00
|
|
|
#include "Qt5Data.hxx"
|
2017-10-27 13:15:37 +02:00
|
|
|
|
2017-10-30 18:33:06 +01:00
|
|
|
#include <QtCore/QPoint>
|
|
|
|
#include <QtCore/QSize>
|
|
|
|
#include <QtGui/QIcon>
|
2017-10-27 13:15:37 +02:00
|
|
|
#include <QtGui/QWindow>
|
2017-10-30 19:44:40 +01:00
|
|
|
#include <QtGui/QScreen>
|
2017-10-27 13:15:37 +02:00
|
|
|
|
2017-10-30 18:33:06 +01:00
|
|
|
#include <saldatabasic.hxx>
|
2017-10-30 19:44:40 +01:00
|
|
|
#include <vcl/layout.hxx>
|
2017-10-30 18:33:06 +01:00
|
|
|
#include <vcl/syswin.hxx>
|
|
|
|
|
2017-10-24 19:49:45 +02:00
|
|
|
#include <cairo.h>
|
|
|
|
#include <headless/svpgdi.hxx>
|
|
|
|
|
|
|
|
static void SvpDamageHandler( void *handle,
|
|
|
|
sal_Int32 nExtentsX, sal_Int32 nExtentsY,
|
|
|
|
sal_Int32 nExtentsWidth, sal_Int32 nExtentsHeight )
|
|
|
|
{
|
|
|
|
Qt5Frame* pThis = static_cast< Qt5Frame* >( handle );
|
|
|
|
pThis->Damage( nExtentsX, nExtentsY, nExtentsWidth, nExtentsHeight );
|
|
|
|
}
|
|
|
|
|
|
|
|
Qt5Frame::Qt5Frame( Qt5Frame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo )
|
|
|
|
: m_bUseCairo( bUseCairo )
|
|
|
|
, m_bGraphicsInUse( false )
|
2017-10-30 19:32:45 +01:00
|
|
|
, m_ePointerStyle( PointerStyle::Arrow )
|
2017-10-30 19:44:40 +01:00
|
|
|
, m_bDefaultSize( true )
|
|
|
|
, m_bDefaultPos( true )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-30 18:45:46 +01:00
|
|
|
Qt5Instance *pInst = static_cast<Qt5Instance*>( GetSalData()->m_pInstance );
|
2017-10-27 13:15:37 +02:00
|
|
|
pInst->insertFrame( this );
|
|
|
|
|
2017-10-24 19:49:45 +02:00
|
|
|
m_aDamageHandler.handle = this;
|
|
|
|
m_aDamageHandler.damaged = ::SvpDamageHandler;
|
|
|
|
|
2017-10-27 13:15:37 +02:00
|
|
|
if( nStyle & SalFrameStyleFlags::DEFAULT ) // ensure default style
|
|
|
|
{
|
|
|
|
nStyle |= SalFrameStyleFlags::MOVEABLE | SalFrameStyleFlags::SIZEABLE | SalFrameStyleFlags::CLOSEABLE;
|
|
|
|
nStyle &= ~SalFrameStyleFlags::FLOAT;
|
|
|
|
}
|
|
|
|
|
|
|
|
m_nStyle = nStyle;
|
|
|
|
m_pParent = pParent;
|
|
|
|
|
|
|
|
Qt::WindowFlags aWinFlags;
|
|
|
|
if ( !(nStyle & SalFrameStyleFlags::SYSTEMCHILD) )
|
|
|
|
{
|
|
|
|
if( nStyle & SalFrameStyleFlags::INTRO )
|
|
|
|
aWinFlags |= Qt::SplashScreen;
|
|
|
|
else if( nStyle & (SalFrameStyleFlags::FLOAT |
|
|
|
|
SalFrameStyleFlags::TOOLTIP) )
|
|
|
|
aWinFlags |= Qt::ToolTip;
|
|
|
|
else if( (nStyle & SalFrameStyleFlags::FLOAT) &&
|
|
|
|
! (nStyle & SalFrameStyleFlags::OWNERDRAWDECORATION) )
|
|
|
|
aWinFlags |= Qt::Popup;
|
|
|
|
else if( nStyle & SalFrameStyleFlags::DIALOG && pParent )
|
|
|
|
aWinFlags |= Qt::Dialog;
|
|
|
|
else if( nStyle & SalFrameStyleFlags::TOOLWINDOW )
|
|
|
|
aWinFlags |= Qt::Tool;
|
|
|
|
else if( (nStyle & SalFrameStyleFlags::OWNERDRAWDECORATION) )
|
|
|
|
aWinFlags |= Qt::Window | Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus;
|
|
|
|
else
|
|
|
|
aWinFlags |= Qt::Window;
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
m_pQWidget.reset( new Qt5Widget( *this, pParent ? pParent->GetQWidget() : nullptr, aWinFlags ) );
|
2017-10-27 13:15:37 +02:00
|
|
|
|
|
|
|
if (pParent && !(pParent->m_nStyle & SalFrameStyleFlags::PLUG))
|
|
|
|
{
|
|
|
|
QWindow *pParentWindow = pParent->GetQWidget()->window()->windowHandle();
|
|
|
|
QWindow *pChildWindow = m_pQWidget->window()->windowHandle();
|
|
|
|
if ( pParentWindow != pChildWindow )
|
|
|
|
pChildWindow->setTransientParent( pParentWindow );
|
|
|
|
}
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
Qt5Frame::~Qt5Frame()
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-30 18:45:46 +01:00
|
|
|
Qt5Instance *pInst = static_cast<Qt5Instance*>( GetSalData()->m_pInstance );
|
2017-10-27 13:15:37 +02:00
|
|
|
pInst->eraseFrame( this );
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-24 19:49:45 +02:00
|
|
|
void Qt5Frame::Damage( sal_Int32 nExtentsX, sal_Int32 nExtentsY,
|
|
|
|
sal_Int32 nExtentsWidth, sal_Int32 nExtentsHeight) const
|
|
|
|
{
|
|
|
|
m_pQWidget->update( nExtentsX, nExtentsY, nExtentsWidth, nExtentsHeight );
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::TriggerPaintEvent()
|
2017-10-31 01:07:06 +01:00
|
|
|
{
|
|
|
|
QSize aSize( m_pQWidget->size() );
|
2017-10-24 19:49:45 +02:00
|
|
|
SalPaintEvent aPaintEvt( 0, 0, aSize.width(), aSize.height(), true );
|
|
|
|
CallCallback( SalEvent::Paint, &aPaintEvt );
|
|
|
|
}
|
|
|
|
|
|
|
|
void Qt5Frame::TriggerPaintEvent( QRect aRect )
|
|
|
|
{
|
|
|
|
SalPaintEvent aPaintEvt( aRect.x(), aRect.y(),
|
|
|
|
aRect.width(), aRect.height(), true );
|
|
|
|
CallCallback( SalEvent::Paint, &aPaintEvt );
|
2017-10-31 01:07:06 +01:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
SalGraphics* Qt5Frame::AcquireGraphics()
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-31 01:07:06 +01:00
|
|
|
if( m_bGraphicsInUse )
|
|
|
|
return nullptr;
|
|
|
|
|
|
|
|
m_bGraphicsInUse = true;
|
|
|
|
|
2017-10-24 19:49:45 +02:00
|
|
|
if( m_bUseCairo )
|
|
|
|
{
|
|
|
|
if( !m_pSvpGraphics.get() )
|
|
|
|
{
|
|
|
|
int width = m_pQWidget->size().width();
|
|
|
|
int height = m_pQWidget->size().height();
|
|
|
|
m_pSvpGraphics.reset( new SvpSalGraphics() );
|
|
|
|
m_pSurface.reset( cairo_image_surface_create( CAIRO_FORMAT_ARGB32, width, height ));
|
|
|
|
m_pSvpGraphics->setSurface( m_pSurface.get(), basegfx::B2IVector(width, height) );
|
|
|
|
cairo_surface_set_user_data( m_pSurface.get(), SvpSalGraphics::getDamageKey(),
|
|
|
|
&m_aDamageHandler, nullptr );
|
|
|
|
TriggerPaintEvent();
|
|
|
|
}
|
|
|
|
return m_pSvpGraphics.get();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if( !m_pQt5Graphics.get() )
|
|
|
|
{
|
|
|
|
m_pQt5Graphics.reset( new Qt5Graphics( this ) );
|
|
|
|
m_pQImage.reset( new QImage( m_pQWidget->size(), Qt5_DefaultFormat32 ) );
|
|
|
|
m_pQt5Graphics->ChangeQImage( m_pQImage.get() );
|
|
|
|
TriggerPaintEvent();
|
|
|
|
}
|
|
|
|
return m_pQt5Graphics.get();
|
|
|
|
}
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::ReleaseGraphics( SalGraphics* pSalGraph )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-31 01:07:06 +01:00
|
|
|
(void) pSalGraph;
|
2017-10-24 19:49:45 +02:00
|
|
|
if( m_bUseCairo )
|
|
|
|
assert( pSalGraph == m_pSvpGraphics.get() );
|
|
|
|
else
|
|
|
|
assert( pSalGraph == m_pQt5Graphics.get() );
|
2017-10-31 01:07:06 +01:00
|
|
|
m_bGraphicsInUse = false;
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
bool Qt5Frame::PostEvent( ImplSVEvent* pData )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-30 18:45:46 +01:00
|
|
|
Qt5Instance *pInst = static_cast<Qt5Instance*>( GetSalData()->m_pInstance );
|
2017-10-31 01:07:06 +01:00
|
|
|
pInst->PostEvent( this, pData, SalEvent::UserEvent );
|
|
|
|
return true;
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetTitle( const OUString& rTitle )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-30 18:33:06 +01:00
|
|
|
m_pQWidget->window()->setWindowTitle( toQString( rTitle ) );
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetIcon( sal_uInt16 nIcon )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-30 18:33:06 +01:00
|
|
|
if( m_nStyle & (SalFrameStyleFlags::PLUG |
|
|
|
|
SalFrameStyleFlags::SYSTEMCHILD |
|
|
|
|
SalFrameStyleFlags::FLOAT |
|
|
|
|
SalFrameStyleFlags::INTRO |
|
|
|
|
SalFrameStyleFlags::OWNERDRAWDECORATION)
|
|
|
|
|| !m_pQWidget->isWindow() )
|
|
|
|
return;
|
|
|
|
|
|
|
|
const char * appicon;
|
|
|
|
|
|
|
|
if (nIcon == SV_ICON_ID_TEXT)
|
|
|
|
appicon = "libreoffice-writer";
|
|
|
|
else if (nIcon == SV_ICON_ID_SPREADSHEET)
|
|
|
|
appicon = "libreoffice-calc";
|
|
|
|
else if (nIcon == SV_ICON_ID_DRAWING)
|
|
|
|
appicon = "libreoffice-draw";
|
|
|
|
else if (nIcon == SV_ICON_ID_PRESENTATION)
|
|
|
|
appicon = "libreoffice-impress";
|
|
|
|
else if (nIcon == SV_ICON_ID_DATABASE)
|
|
|
|
appicon = "libreoffice-base";
|
|
|
|
else if (nIcon == SV_ICON_ID_FORMULA)
|
|
|
|
appicon = "libreoffice-math";
|
|
|
|
else
|
|
|
|
appicon = "libreoffice-startcenter";
|
|
|
|
|
|
|
|
QIcon aIcon = QIcon::fromTheme( appicon );
|
|
|
|
m_pQWidget->window()->setWindowIcon( aIcon );
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetMenu( SalMenu* pMenu )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::DrawMenuBar()
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetExtendedFrameStyle( SalExtStyle nExtStyle )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::Show( bool bVisible, bool bNoActivate )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-31 01:07:06 +01:00
|
|
|
assert( m_pQWidget.get() );
|
|
|
|
m_pQWidget->setVisible( bVisible );
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetMinClientSize( long nWidth, long nHeight )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-31 01:07:06 +01:00
|
|
|
if( ! isChild() )
|
|
|
|
m_pQWidget->setMinimumSize( nWidth, nHeight );
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetMaxClientSize( long nWidth, long nHeight )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-31 01:07:06 +01:00
|
|
|
if( ! isChild() )
|
|
|
|
m_pQWidget->setMaximumSize( nWidth, nHeight );
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 19:44:40 +01:00
|
|
|
void Qt5Frame::Center()
|
|
|
|
{
|
|
|
|
if ( m_pParent )
|
|
|
|
{
|
|
|
|
QWidget *pWindow = m_pParent->GetQWidget()->window();
|
|
|
|
m_pQWidget->move(
|
|
|
|
pWindow->frameGeometry().topLeft() +
|
|
|
|
pWindow->rect().center() - m_pQWidget->rect().center() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Size Qt5Frame::CalcDefaultSize()
|
|
|
|
{
|
|
|
|
assert( m_pQWidget->isWindow() );
|
|
|
|
QScreen *pScreen = m_pQWidget->windowHandle()->screen();
|
|
|
|
if( !pScreen )
|
|
|
|
return Size();
|
|
|
|
return bestmaxFrameSizeForScreenSize( toSize( pScreen->size() ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
void Qt5Frame::SetDefaultSize()
|
|
|
|
{
|
|
|
|
Size aDefSize = CalcDefaultSize();
|
|
|
|
SetPosSize( 0, 0, aDefSize.Width(), aDefSize.Height(),
|
|
|
|
SAL_FRAME_POSSIZE_WIDTH | SAL_FRAME_POSSIZE_HEIGHT );
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetPosSize( long nX, long nY, long nWidth, long nHeight, sal_uInt16 nFlags )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-30 19:44:40 +01:00
|
|
|
if( !m_pQWidget->isWindow() || isChild( true, false ) )
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if( (nFlags & ( SAL_FRAME_POSSIZE_WIDTH | SAL_FRAME_POSSIZE_HEIGHT )) &&
|
|
|
|
(nWidth > 0 && nHeight > 0 ) // sometimes stupid things happen
|
|
|
|
)
|
|
|
|
{
|
|
|
|
m_bDefaultSize = false;
|
|
|
|
if( isChild( false ) || !m_pQWidget->isMaximized() )
|
|
|
|
{
|
|
|
|
m_pQWidget->resize( nWidth, nHeight );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if( m_bDefaultSize )
|
|
|
|
SetDefaultSize();
|
|
|
|
|
|
|
|
m_bDefaultSize = false;
|
|
|
|
|
|
|
|
if( nFlags & ( SAL_FRAME_POSSIZE_X | SAL_FRAME_POSSIZE_Y ) )
|
|
|
|
{
|
|
|
|
if( m_pParent )
|
|
|
|
{
|
|
|
|
QRect aRect = m_pParent->GetQWidget()->geometry();
|
|
|
|
nX += aRect.x();
|
|
|
|
nY += aRect.y();
|
|
|
|
}
|
|
|
|
|
|
|
|
m_bDefaultPos = false;
|
|
|
|
m_pQWidget->move( nX, nY );
|
|
|
|
}
|
|
|
|
else if( m_bDefaultPos )
|
|
|
|
Center();
|
|
|
|
|
|
|
|
m_bDefaultPos = false;
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::GetClientSize( long& rWidth, long& rHeight )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-31 01:07:06 +01:00
|
|
|
rWidth = m_pQWidget->width();
|
|
|
|
rHeight = m_pQWidget->height();
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::GetWorkArea( tools::Rectangle& rRect )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-30 19:44:40 +01:00
|
|
|
if( !m_pQWidget->isWindow() )
|
|
|
|
return;
|
|
|
|
QScreen *pScreen = m_pQWidget->windowHandle()->screen();
|
|
|
|
if( !pScreen )
|
|
|
|
return;
|
|
|
|
|
|
|
|
QSize aSize = pScreen->availableVirtualSize();
|
|
|
|
rRect = tools::Rectangle( 0, 0, aSize.width(), aSize.height() );
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
SalFrame* Qt5Frame::GetParent() const
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-31 01:07:06 +01:00
|
|
|
return m_pParent;
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetWindowState( const SalFrameState* pState )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-30 18:33:06 +01:00
|
|
|
if( !m_pQWidget->isWindow() || !pState || isChild( true, false ) )
|
|
|
|
return;
|
|
|
|
|
|
|
|
const WindowStateMask nMaxGeometryMask =
|
|
|
|
WindowStateMask::X | WindowStateMask::Y |
|
|
|
|
WindowStateMask::Width | WindowStateMask::Height |
|
|
|
|
WindowStateMask::MaximizedX | WindowStateMask::MaximizedY |
|
|
|
|
WindowStateMask::MaximizedWidth | WindowStateMask::MaximizedHeight;
|
|
|
|
|
|
|
|
if( (pState->mnMask & WindowStateMask::State) &&
|
|
|
|
(pState->mnState & WindowStateState::Maximized) &&
|
|
|
|
(pState->mnMask & nMaxGeometryMask) == nMaxGeometryMask )
|
|
|
|
m_pQWidget->showMaximized();
|
|
|
|
else if( pState->mnMask & (WindowStateMask::X | WindowStateMask::Y |
|
|
|
|
WindowStateMask::Width | WindowStateMask::Height ) )
|
|
|
|
{
|
2017-10-30 19:44:40 +01:00
|
|
|
sal_uInt16 nPosSizeFlags = 0;
|
|
|
|
QPoint aPos = m_pQWidget->pos();
|
|
|
|
QPoint aParentPos;
|
|
|
|
if( m_pParent )
|
|
|
|
aParentPos = m_pParent->GetQWidget()->window()->pos();
|
|
|
|
long nX = pState->mnX - aParentPos.x();
|
|
|
|
long nY = pState->mnY - aParentPos.y();
|
|
|
|
if( pState->mnMask & WindowStateMask::X )
|
|
|
|
nPosSizeFlags |= SAL_FRAME_POSSIZE_X;
|
|
|
|
else
|
|
|
|
nX = aPos.x() - aParentPos.x();
|
|
|
|
if( pState->mnMask & WindowStateMask::Y )
|
|
|
|
nPosSizeFlags |= SAL_FRAME_POSSIZE_Y;
|
|
|
|
else
|
|
|
|
nY = aPos.y() - aParentPos.y();
|
|
|
|
if( pState->mnMask & WindowStateMask::Width )
|
|
|
|
nPosSizeFlags |= SAL_FRAME_POSSIZE_WIDTH;
|
|
|
|
if( pState->mnMask & WindowStateMask::Height )
|
|
|
|
nPosSizeFlags |= SAL_FRAME_POSSIZE_HEIGHT;
|
|
|
|
SetPosSize( nX, nY, pState->mnWidth, pState->mnHeight, nPosSizeFlags );
|
2017-10-30 18:33:06 +01:00
|
|
|
}
|
|
|
|
else if( pState->mnMask & WindowStateMask::State && ! isChild() )
|
|
|
|
{
|
|
|
|
if( (pState->mnState & WindowStateState::Minimized) && m_pQWidget->isWindow() )
|
|
|
|
m_pQWidget->showMinimized();
|
|
|
|
else
|
|
|
|
m_pQWidget->showNormal();
|
|
|
|
}
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
bool Qt5Frame::GetWindowState( SalFrameState* pState )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-30 18:33:06 +01:00
|
|
|
pState->mnState = WindowStateState::Normal;
|
|
|
|
pState->mnMask = WindowStateMask::State;
|
|
|
|
if( m_pQWidget->isMinimized() || !m_pQWidget->windowHandle() )
|
|
|
|
pState->mnState |= WindowStateState::Minimized;
|
|
|
|
else if( m_pQWidget->isMaximized() )
|
|
|
|
{
|
|
|
|
pState->mnState |= WindowStateState::Maximized;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
QRect rect = m_pQWidget->geometry();
|
|
|
|
pState->mnX = rect.x();
|
|
|
|
pState->mnY = rect.y();
|
|
|
|
pState->mnWidth = rect.width();
|
|
|
|
pState->mnHeight = rect.height();
|
|
|
|
pState->mnMask |= WindowStateMask::X |
|
|
|
|
WindowStateMask::Y |
|
|
|
|
WindowStateMask::Width |
|
|
|
|
WindowStateMask::Height;
|
|
|
|
}
|
|
|
|
|
2017-10-30 19:44:40 +01:00
|
|
|
|
2017-10-30 18:33:06 +01:00
|
|
|
return true;
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::ShowFullScreen( bool bFullScreen, sal_Int32 nDisplay )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::StartPresentation( bool bStart )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetAlwaysOnTop( bool bOnTop )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::ToTop( SalFrameToTop nFlags )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetPointer( PointerStyle ePointerStyle )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-30 19:32:45 +01:00
|
|
|
QWindow *pWindow = m_pQWidget->window()->windowHandle();
|
|
|
|
if( !pWindow )
|
|
|
|
return;
|
|
|
|
if( ePointerStyle == m_ePointerStyle )
|
|
|
|
return;
|
|
|
|
m_ePointerStyle = ePointerStyle;
|
|
|
|
|
|
|
|
pWindow->setCursor( static_cast<Qt5Data*>( GetSalData() )->getCursor( ePointerStyle ) );
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::CaptureMouse( bool bMouse )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetPointerPos( long nX, long nY )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::Flush()
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::Flush( const tools::Rectangle& rRect )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetInputContext( SalInputContext* pContext )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::EndExtTextInput( EndExtTextInputFlags nFlags )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
OUString Qt5Frame::GetKeyName( sal_uInt16 nKeyCode )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
return OUString();
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
bool Qt5Frame::MapUnicodeToKeyCode( sal_Unicode aUnicode, LanguageType aLangType, vcl::KeyCode& rKeyCode )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
LanguageType Qt5Frame::GetInputLanguage()
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
return LANGUAGE_DONTKNOW;
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::UpdateSettings( AllSettings& rSettings )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::Beep()
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
const SystemEnvData* Qt5Frame::GetSystemData() const
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
SalFrame::SalPointerState Qt5Frame::GetPointerState()
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
return SalPointerState();
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
KeyIndicatorState Qt5Frame::GetIndicatorState()
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
return KeyIndicatorState();
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SimulateKeyPress( sal_uInt16 nKeyCode )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetParent( SalFrame* pNewParent )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
2017-10-30 18:45:46 +01:00
|
|
|
m_pParent = static_cast< Qt5Frame* >( pNewParent );
|
2017-10-21 13:50:30 +00:00
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
bool Qt5Frame::SetPluginParent( SystemParentData* pNewParent )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::ResetClipRegion()
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::BeginSetClipRegion( sal_uLong nRects )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::UnionClipRegion( long nX, long nY, long nWidth, long nHeight )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::EndSetClipRegion()
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetScreenNumber( unsigned int )
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2017-10-30 18:45:46 +01:00
|
|
|
void Qt5Frame::SetApplicationID(const OUString &)
|
2017-10-21 13:50:30 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|