Kaydet (Commit) cb997040 authored tarafından Maxim Monastirsky's avatar Maxim Monastirsky

Wayland: Make various popups work in the overflow toolbar

Were failing to show, with this warning:

Gdk-WARNING **: Tried to map a popup with a non-top most parent

Change-Id: Ib68b5fc9b3edb3d25a23b66397c13833a4d080ac
Reviewed-on: https://gerrit.libreoffice.org/42936Reviewed-by: 's avatarMaxim Monastirsky <momonasmon@gmail.com>
Tested-by: 's avatarMaxim Monastirsky <momonasmon@gmail.com>
üst 8b053a3c
......@@ -32,7 +32,8 @@ class SvxCharView;
class SFX2_DLLPUBLIC SfxCharmapCtrl : public SfxPopupWindow
{
public:
explicit SfxCharmapCtrl(sal_uInt16 nId, const css::uno::Reference< css::frame::XFrame >& rFrame);
explicit SfxCharmapCtrl(sal_uInt16 nId, vcl::Window* pParent,
const css::uno::Reference< css::frame::XFrame >& rFrame);
virtual ~SfxCharmapCtrl() override;
......
......@@ -27,7 +27,8 @@ enum class FILTER_CATEGORY;
class SFX2_DLLPUBLIC SfxEmojiControl : public SfxPopupWindow
{
public:
explicit SfxEmojiControl(sal_uInt16 nId, const css::uno::Reference< css::frame::XFrame >& rFrame);
explicit SfxEmojiControl(sal_uInt16 nId, vcl::Window* pParent,
const css::uno::Reference< css::frame::XFrame >& rFrame);
virtual ~SfxEmojiControl() override;
......
......@@ -92,13 +92,9 @@ protected:
virtual void statusChanged( const css::frame::FeatureStateEvent& rEvent );
public:
SfxPopupWindow( sal_uInt16 nId,
SfxPopupWindow(sal_uInt16 nId, vcl::Window *pParent,
const css::uno::Reference< css::frame::XFrame >& rFrame,
WinBits nBits );
SfxPopupWindow(sal_uInt16 nId,
const OString& rID, const OUString& rUIXMLDescription,
const css::uno::Reference<css::frame::XFrame> &rFrame =
css::uno::Reference<css::frame::XFrame>());
SfxPopupWindow(sal_uInt16 nId, vcl::Window *pParent,
const OString& rID, const OUString& rUIXMLDescription,
const css::uno::Reference<css::frame::XFrame> &rFrame =
......
......@@ -24,8 +24,8 @@
using namespace css;
SfxCharmapCtrl::SfxCharmapCtrl(sal_uInt16 nId, const css::uno::Reference< css::frame::XFrame >& rFrame)
: SfxPopupWindow(nId, "charmapctrl", "sfx/ui/charmapcontrol.ui", rFrame)
SfxCharmapCtrl::SfxCharmapCtrl(sal_uInt16 nId, vcl::Window* pParent, const css::uno::Reference< css::frame::XFrame >& rFrame)
: SfxPopupWindow(nId, pParent, "charmapctrl", "sfx/ui/charmapcontrol.ui", rFrame)
{
get( m_pRecentCharView[0], "viewchar1" );
get( m_pRecentCharView[1], "viewchar2" );
......
......@@ -36,8 +36,8 @@ const char FILTER_UNICODE9[] = "unicode9";
using namespace com::sun::star;
SfxEmojiControl::SfxEmojiControl(sal_uInt16 nId, const css::uno::Reference< css::frame::XFrame >& rFrame)
: SfxPopupWindow(nId, "emojictrl", "sfx/ui/emojicontrol.ui", rFrame)
SfxEmojiControl::SfxEmojiControl(sal_uInt16 nId, vcl::Window* pParent, const css::uno::Reference< css::frame::XFrame >& rFrame)
: SfxPopupWindow(nId, pParent, "emojictrl", "sfx/ui/emojicontrol.ui", rFrame)
{
get(mpTabControl, "tab_control");
get(mpEmojiView, "emoji_view");
......
......@@ -35,7 +35,7 @@ EmojiPopup::~EmojiPopup()
VclPtr<SfxPopupWindow> EmojiPopup::CreatePopupWindow()
{
VclPtr<SfxEmojiControl> pControl = VclPtr<SfxEmojiControl>::Create(GetSlotId(), m_xFrame);
VclPtr<SfxEmojiControl> pControl = VclPtr<SfxEmojiControl>::Create(GetSlotId(), &GetToolBox(), m_xFrame);
pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus);
......
......@@ -35,7 +35,7 @@ CharmapPopup::~CharmapPopup()
VclPtr<SfxPopupWindow> CharmapPopup::CreatePopupWindow()
{
VclPtr<SfxCharmapCtrl> pControl = VclPtr<SfxCharmapCtrl>::Create(GetSlotId(), m_xFrame);
VclPtr<SfxCharmapCtrl> pControl = VclPtr<SfxCharmapCtrl>::Create(GetSlotId(), &GetToolBox(), m_xFrame);
pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus);
......
......@@ -710,22 +710,10 @@ void SAL_CALL SfxFrameStatusListener::statusChanged( const css::frame::FeatureSt
SfxPopupWindow::SfxPopupWindow(
sal_uInt16 nId,
vcl::Window* pParentWindow,
const Reference< XFrame >& rFrame,
WinBits nBits ) :
FloatingWindow( SfxGetpApp()->GetTopWindow(), nBits )
, m_bFloating( false )
, m_bCascading( false )
, m_nId( nId )
, m_xFrame( rFrame )
{
vcl::Window* pWindow = GetTopMostParentSystemWindow( this );
if ( pWindow )
static_cast<SystemWindow *>(pWindow)->GetTaskPaneList()->AddWindow( this );
}
SfxPopupWindow::SfxPopupWindow(sal_uInt16 nId, const OString& rID, const OUString& rUIXMLDescription,
const css::uno::Reference<css::frame::XFrame> &rFrame)
: FloatingWindow(SfxGetpApp()->GetTopWindow(), rID, rUIXMLDescription, rFrame)
FloatingWindow( pParentWindow, nBits )
, m_bFloating( false )
, m_bCascading( false )
, m_nId( nId )
......
......@@ -46,8 +46,8 @@
using namespace svx;
ParaLineSpacingControl::ParaLineSpacingControl(sal_uInt16 nId)
: SfxPopupWindow(nId, "ParaLineSpacingControl", "svx/ui/paralinespacingcontrol.ui")
ParaLineSpacingControl::ParaLineSpacingControl(sal_uInt16 nId, vcl::Window* pParent)
: SfxPopupWindow(nId, pParent, "ParaLineSpacingControl", "svx/ui/paralinespacingcontrol.ui")
{
mpSpacing1Button = get<PushButton>("spacing_1");
mpSpacing115Button = get<PushButton>("spacing_115");
......
......@@ -30,7 +30,7 @@ namespace svx {
class ParaLineSpacingControl : public SfxPopupWindow
{
public:
explicit ParaLineSpacingControl(sal_uInt16 nId);
explicit ParaLineSpacingControl(sal_uInt16 nId, vcl::Window* pParent);
virtual ~ParaLineSpacingControl() override;
virtual void dispose() override;
......
......@@ -39,7 +39,7 @@ ParaLineSpacingPopup::~ParaLineSpacingPopup()
VclPtr<SfxPopupWindow> ParaLineSpacingPopup::CreatePopupWindow()
{
VclPtr<ParaLineSpacingControl> pControl = VclPtr<ParaLineSpacingControl>::Create(GetSlotId());
VclPtr<ParaLineSpacingControl> pControl = VclPtr<ParaLineSpacingControl>::Create(GetSlotId(), &GetToolBox());
pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus);
......
......@@ -39,8 +39,8 @@
namespace svx {
TextCharacterSpacingControl::TextCharacterSpacingControl(sal_uInt16 nId)
: SfxPopupWindow(nId, "TextCharacterSpacingControl", "svx/ui/textcharacterspacingcontrol.ui")
TextCharacterSpacingControl::TextCharacterSpacingControl(sal_uInt16 nId, vcl::Window* pParent)
: SfxPopupWindow(nId, pParent, "TextCharacterSpacingControl", "svx/ui/textcharacterspacingcontrol.ui")
, mnId(nId)
, mnCustomKern(0)
, mnLastCus(SPACING_NOCUSTOM)
......
......@@ -34,7 +34,7 @@ namespace svx {
class TextCharacterSpacingControl : public SfxPopupWindow
{
public:
explicit TextCharacterSpacingControl(sal_uInt16 nId);
explicit TextCharacterSpacingControl(sal_uInt16 nId, vcl::Window* pParent);
virtual ~TextCharacterSpacingControl() override;
virtual void dispose() override;
......
......@@ -38,7 +38,7 @@ TextCharacterSpacingPopup::~TextCharacterSpacingPopup()
VclPtr<SfxPopupWindow> TextCharacterSpacingPopup::CreatePopupWindow()
{
VclPtr<TextCharacterSpacingControl> pControl = VclPtr<TextCharacterSpacingControl>::Create(GetSlotId());
VclPtr<TextCharacterSpacingControl> pControl = VclPtr<TextCharacterSpacingControl>::Create(GetSlotId(), &GetToolBox());
pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus);
......
......@@ -29,8 +29,8 @@
namespace svx {
TextUnderlineControl::TextUnderlineControl(sal_uInt16 nId)
: SfxPopupWindow(nId, "TextUnderlineControl", "svx/ui/textunderlinecontrol.ui")
TextUnderlineControl::TextUnderlineControl(sal_uInt16 nId, vcl::Window* pParent)
: SfxPopupWindow(nId, pParent, "TextUnderlineControl", "svx/ui/textunderlinecontrol.ui")
{
get(maNone, "none");
get(maSingle, "single");
......
......@@ -31,7 +31,7 @@ namespace svx {
class TextUnderlineControl : public SfxPopupWindow
{
public:
explicit TextUnderlineControl(sal_uInt16 nId);
explicit TextUnderlineControl(sal_uInt16 nId, vcl::Window* pParent);
virtual ~TextUnderlineControl() override;
virtual void dispose() override;
......
......@@ -43,7 +43,7 @@ void TextUnderlinePopup::initialize( const css::uno::Sequence< css::uno::Any >&
VclPtr<SfxPopupWindow> TextUnderlinePopup::CreatePopupWindow()
{
VclPtr<TextUnderlineControl> pControl = VclPtr<TextUnderlineControl>::Create(GetSlotId());
VclPtr<TextUnderlineControl> pControl = VclPtr<TextUnderlineControl>::Create(GetSlotId(), &GetToolBox());
pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus);
SetPopupWindow(pControl);
......
......@@ -72,6 +72,7 @@ private:
public:
TableWindow( sal_uInt16 nSlotId,
vcl::Window* pParent,
const OUString& rCmd,
const OUString& rText,
const Reference< XFrame >& rFrame );
......@@ -100,9 +101,9 @@ IMPL_LINK_NOARG(TableWindow, SelectHdl, Button*, void)
}
TableWindow::TableWindow( sal_uInt16 nSlotId, const OUString& rCmd, const OUString& rText,
const Reference< XFrame >& rFrame )
: SfxPopupWindow( nSlotId, rFrame, WinBits( WB_STDPOPUP ) )
TableWindow::TableWindow( sal_uInt16 nSlotId, vcl::Window* pParent, const OUString& rCmd,
const OUString& rText, const Reference< XFrame >& rFrame )
: SfxPopupWindow( nSlotId, pParent, rFrame, WB_STDPOPUP )
, aTableButton( VclPtr<PushButton>::Create(this) )
, nCol( 0 )
, nLine( 0 )
......@@ -393,7 +394,8 @@ private:
void UpdateSize_Impl( long nNewCol );
public:
ColumnsWindow( sal_uInt16 nId, const OUString& rCmd, const OUString &rText, const Reference< XFrame >& rFrame );
ColumnsWindow( sal_uInt16 nId, vcl::Window* pParent, const OUString& rCmd,
const OUString &rText, const Reference< XFrame >& rFrame );
void KeyInput( const KeyEvent& rKEvt ) override;
virtual void MouseMove( const MouseEvent& rMEvt ) override;
......@@ -404,8 +406,9 @@ public:
};
ColumnsWindow::ColumnsWindow( sal_uInt16 nId, const OUString& rCmd, const OUString& rText, const Reference< XFrame >& rFrame ) :
SfxPopupWindow( nId, rFrame, WB_STDPOPUP ),
ColumnsWindow::ColumnsWindow( sal_uInt16 nId, vcl::Window* pParent, const OUString& rCmd,
const OUString& rText, const Reference< XFrame >& rFrame ) :
SfxPopupWindow( nId, pParent, rFrame, WB_STDPOPUP ),
bInitialKeyInput(true),
m_bMod1(false),
mxFrame(rFrame),
......@@ -687,7 +690,7 @@ VclPtr<SfxPopupWindow> SvxTableToolBoxControl::CreatePopupWindow()
if ( bEnabled )
{
ToolBox& rTbx = GetToolBox();
VclPtr<TableWindow> pWin = VclPtr<TableWindow>::Create( GetSlotId(), m_aCommandURL, GetToolBox().GetItemText( GetId() ), m_xFrame );
VclPtr<TableWindow> pWin = VclPtr<TableWindow>::Create( GetSlotId(), &GetToolBox(), m_aCommandURL, GetToolBox().GetItemText( GetId() ), m_xFrame );
pWin->StartPopupMode( &rTbx, FloatWinPopupFlags::GrabFocus|FloatWinPopupFlags::NoKeyClose );
SetPopupWindow( pWin );
return pWin;
......@@ -732,7 +735,7 @@ VclPtr<SfxPopupWindow> SvxColumnsToolBoxControl::CreatePopupWindow()
VclPtr<ColumnsWindow> pWin;
if(bEnabled)
{
pWin = VclPtr<ColumnsWindow>::Create( GetSlotId(), m_aCommandURL, GetToolBox().GetItemText( GetId() ), m_xFrame );
pWin = VclPtr<ColumnsWindow>::Create( GetSlotId(), &GetToolBox(), m_aCommandURL, GetToolBox().GetItemText( GetId() ), m_xFrame );
pWin->StartPopupMode( &GetToolBox(),
FloatWinPopupFlags::GrabFocus|FloatWinPopupFlags::NoKeyClose );
SetPopupWindow( pWin );
......
......@@ -71,7 +71,7 @@ public:
};
SvxPopupWindowListBox::SvxPopupWindowListBox(sal_uInt16 nSlotId, const OUString& rCommandURL, sal_uInt16 nId, ToolBox& rTbx)
: SfxPopupWindow(nSlotId, "FloatingUndoRedo", "svx/ui/floatingundoredo.ui")
: SfxPopupWindow(nSlotId, &rTbx, "FloatingUndoRedo", "svx/ui/floatingundoredo.ui")
, rToolBox(rTbx)
, bUserSel(false)
, nTbxId(nId)
......
......@@ -31,8 +31,8 @@
namespace sw { namespace sidebar {
PageColumnControl::PageColumnControl( sal_uInt16 nId )
: SfxPopupWindow( nId, "PageColumnControl", "modules/swriter/ui/pagecolumncontrol.ui" )
PageColumnControl::PageColumnControl( sal_uInt16 nId, vcl::Window* pParent )
: SfxPopupWindow( nId, pParent, "PageColumnControl", "modules/swriter/ui/pagecolumncontrol.ui" )
{
get( m_pMoreButton, "moreoptions" );
......
......@@ -30,7 +30,7 @@ namespace sw { namespace sidebar {
class PageColumnControl : public SfxPopupWindow
{
public:
explicit PageColumnControl(sal_uInt16 nId);
explicit PageColumnControl(sal_uInt16 nId, vcl::Window* pParent);
virtual ~PageColumnControl() override;
virtual void dispose() override;
......
......@@ -35,7 +35,7 @@ PageColumnPopup::~PageColumnPopup()
VclPtr<SfxPopupWindow> PageColumnPopup::CreatePopupWindow()
{
VclPtr<sw::sidebar::PageColumnControl> pControl = VclPtr<sw::sidebar::PageColumnControl>::Create(GetSlotId());
VclPtr<sw::sidebar::PageColumnControl> pControl = VclPtr<sw::sidebar::PageColumnControl>::Create(GetSlotId(), &GetToolBox());
pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus);
SetPopupWindow(pControl);
......
......@@ -94,8 +94,8 @@ namespace
namespace sw { namespace sidebar {
PageMarginControl::PageMarginControl( sal_uInt16 nId )
: SfxPopupWindow( nId, "PageMarginControl", "modules/swriter/ui/pagemargincontrol.ui" )
PageMarginControl::PageMarginControl( sal_uInt16 nId, vcl::Window* pParent )
: SfxPopupWindow( nId, pParent, "PageMarginControl", "modules/swriter/ui/pagemargincontrol.ui" )
, m_nPageLeftMargin(0)
, m_nPageRightMargin(0)
, m_nPageTopMargin(0)
......
......@@ -44,7 +44,7 @@ namespace sw { namespace sidebar {
class PageMarginControl : public SfxPopupWindow
{
public:
explicit PageMarginControl( sal_uInt16 nId );
explicit PageMarginControl( sal_uInt16 nId, vcl::Window* pParent );
virtual ~PageMarginControl() override;
virtual void dispose() override;
......
......@@ -35,7 +35,7 @@ PageMarginPopup::~PageMarginPopup()
VclPtr<SfxPopupWindow> PageMarginPopup::CreatePopupWindow()
{
VclPtr<sw::sidebar::PageMarginControl> pControl = VclPtr<sw::sidebar::PageMarginControl>::Create(GetSlotId());
VclPtr<sw::sidebar::PageMarginControl> pControl = VclPtr<sw::sidebar::PageMarginControl>::Create(GetSlotId(), &GetToolBox());
pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus);
SetPopupWindow(pControl);
......
......@@ -52,8 +52,8 @@ namespace {
namespace sw { namespace sidebar {
PageOrientationControl::PageOrientationControl( sal_uInt16 nId )
: SfxPopupWindow( nId, "PageOrientationControl", "modules/swriter/ui/pageorientationcontrol.ui" )
PageOrientationControl::PageOrientationControl( sal_uInt16 nId, vcl::Window* pParent )
: SfxPopupWindow( nId, pParent, "PageOrientationControl", "modules/swriter/ui/pageorientationcontrol.ui" )
, mpPageItem( new SvxPageItem(SID_ATTR_PAGE) )
, mpPageSizeItem( new SvxSizeItem(SID_ATTR_PAGE_SIZE) )
, mpPageLRMarginItem( new SvxLongLRSpaceItem( 0, 0, SID_ATTR_PAGE_LRSPACE ) )
......
......@@ -32,7 +32,7 @@ namespace sw { namespace sidebar {
class PageOrientationControl : public SfxPopupWindow
{
public:
explicit PageOrientationControl(sal_uInt16 nId);
explicit PageOrientationControl(sal_uInt16 nId, vcl::Window* pParent);
virtual ~PageOrientationControl() override;
virtual void dispose() override;
......
......@@ -35,7 +35,7 @@ PageOrientationPopup::~PageOrientationPopup()
VclPtr<SfxPopupWindow> PageOrientationPopup::CreatePopupWindow()
{
VclPtr<sw::sidebar::PageOrientationControl> pControl = VclPtr<sw::sidebar::PageOrientationControl>::Create(GetSlotId());
VclPtr<sw::sidebar::PageOrientationControl> pControl = VclPtr<sw::sidebar::PageOrientationControl>::Create(GetSlotId(), &GetToolBox());
pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus);
SetPopupWindow(pControl);
......
......@@ -65,8 +65,8 @@ namespace
namespace sw { namespace sidebar {
PageSizeControl::PageSizeControl( sal_uInt16 nId )
: SfxPopupWindow( nId, "PageSizeControl", "modules/swriter/ui/pagesizecontrol.ui" )
PageSizeControl::PageSizeControl( sal_uInt16 nId, vcl::Window* pParent )
: SfxPopupWindow( nId, pParent, "PageSizeControl", "modules/swriter/ui/pagesizecontrol.ui" )
, maPaperList()
{
get(maMoreButton, "moreoptions");
......
......@@ -41,7 +41,7 @@ namespace sw { namespace sidebar {
class PageSizeControl : public SfxPopupWindow
{
public:
explicit PageSizeControl(sal_uInt16 nId);
explicit PageSizeControl(sal_uInt16 nId, vcl::Window* pParent);
virtual ~PageSizeControl() override;
virtual void dispose() override;
......
......@@ -35,7 +35,7 @@ PageSizePopup::~PageSizePopup()
VclPtr<SfxPopupWindow> PageSizePopup::CreatePopupWindow()
{
VclPtr<sw::sidebar::PageSizeControl> pControl = VclPtr<sw::sidebar::PageSizeControl>::Create(GetSlotId());
VclPtr<sw::sidebar::PageSizeControl> pControl = VclPtr<sw::sidebar::PageSizeControl>::Create(GetSlotId(), &GetToolBox());
pControl->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus);
SetPopupWindow(pControl);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment