summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-02-26 14:38:30 +0000
committerCaolán McNamara <caolanm@redhat.com>2021-02-27 20:13:27 +0100
commit36348c21c5499f539fd354de6a980fa7a59218bd (patch)
tree0a3fd6ac481f2f6d1fc4bc352e105ac0ed716084
parent3d9f5d21154f4a79df0a3ea4c2d3b6289a034d31 (diff)
drop intermediate vcl container for impress annotation floating toplevel
Change-Id: Ia285322d69ea8ac803e1ee5ed8ba195388189058 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111661 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--sd/source/ui/annotations/annotationmanager.cxx1
-rw-r--r--sd/source/ui/annotations/annotationtag.cxx35
-rw-r--r--sd/source/ui/annotations/annotationtag.hxx3
-rw-r--r--sd/source/ui/annotations/annotationwindow.cxx157
-rw-r--r--sd/source/ui/annotations/annotationwindow.hxx52
-rw-r--r--sd/uiconfig/simpress/ui/annotation.ui159
6 files changed, 180 insertions, 227 deletions
diff --git a/sd/source/ui/annotations/annotationmanager.cxx b/sd/source/ui/annotations/annotationmanager.cxx
index fdd296b92f8a..28f09dd8b237 100644
--- a/sd/source/ui/annotations/annotationmanager.cxx
+++ b/sd/source/ui/annotations/annotationmanager.cxx
@@ -18,6 +18,7 @@
*/
#include <com/sun/star/drawing/XDrawView.hpp>
+#include <com/sun/star/frame/XController.hpp>
#include <com/sun/star/geometry/RealPoint2D.hpp>
#include <com/sun/star/text/XText.hpp>
#include <com/sun/star/document/XEventBroadcaster.hpp>
diff --git a/sd/source/ui/annotations/annotationtag.cxx b/sd/source/ui/annotations/annotationtag.cxx
index 9da90e2e2b57..4e79f8d337f9 100644
--- a/sd/source/ui/annotations/annotationtag.cxx
+++ b/sd/source/ui/annotations/annotationtag.cxx
@@ -578,43 +578,34 @@ void AnnotationTag::OpenPopup( bool bEdit )
if( pWindow )
{
RealPoint2D aPosition( mxAnnotation->getPosition() );
- Point aPos( pWindow->OutputToScreenPixel( pWindow->LogicToPixel( Point( static_cast<::tools::Long>(aPosition.X * 100.0), static_cast<::tools::Long>(aPosition.Y * 100.0) ) ) ) );
+ Point aPos(pWindow->LogicToPixel( Point( static_cast<::tools::Long>(aPosition.X * 100.0), static_cast<::tools::Long>(aPosition.Y * 100.0) ) ) );
aPos.AdjustX(4 ); // magic!
aPos.AdjustY(1 );
::tools::Rectangle aRect( aPos, maSize );
- mpAnnotationWindow.reset( VclPtr<AnnotationWindow>::Create( mrView.GetDocSh(), pWindow->GetWindow(GetWindowType::Frame) ) );
- AnnotationContents& rAnnotation = mpAnnotationWindow->GetContents();
- rAnnotation.InitControls();
- rAnnotation.setAnnotation(mxAnnotation);
-
- sal_uInt16 nArrangeIndex = 0;
- Point aPopupPos( FloatingWindow::CalcFloatingPosition( mpAnnotationWindow.get(), aRect, FloatWinPopupFlags::Right, nArrangeIndex ) );
- Size aPopupSize( 320, 240 );
-
- mpAnnotationWindow->SetPosSizePixel( aPopupPos, aPopupSize );
- mpAnnotationWindow->DoResize();
-
- mpAnnotationWindow->Show();
- mpAnnotationWindow->GrabFocus();
- mpAnnotationWindow->AddEventListener( LINK(this, AnnotationTag, WindowEventHandler));
+ weld::Window* pParent = weld::GetPopupParent(*pWindow, aRect);
+ mpAnnotationWindow.reset(new AnnotationWindow(pParent, aRect, mrView.GetDocSh(), mxAnnotation));
+ mpAnnotationWindow->connect_closed(LINK(this, AnnotationTag, PopupModeEndHdl));
}
}
if (bEdit && mpAnnotationWindow)
- mpAnnotationWindow->GetContents().StartEdit();
+ mpAnnotationWindow->StartEdit();
+}
+
+IMPL_LINK_NOARG(AnnotationTag, PopupModeEndHdl, weld::Popover&, void)
+{
+ ClosePopup();
}
void AnnotationTag::ClosePopup()
{
- if( mpAnnotationWindow )
+ if (mpAnnotationWindow)
{
- mpAnnotationWindow->RemoveEventListener( LINK(this, AnnotationTag, WindowEventHandler));
- AnnotationContents& rAnnotation = mpAnnotationWindow->GetContents();
- rAnnotation.SaveToDocument();
- mpAnnotationWindow.disposeAndClear();
+ mpAnnotationWindow->SaveToDocument();
+ mpAnnotationWindow.reset();
}
}
diff --git a/sd/source/ui/annotations/annotationtag.hxx b/sd/source/ui/annotations/annotationtag.hxx
index 7a02e304078c..9eea78838eda 100644
--- a/sd/source/ui/annotations/annotationtag.hxx
+++ b/sd/source/ui/annotations/annotationtag.hxx
@@ -70,10 +70,11 @@ private:
virtual void deselect() override;
DECL_LINK( WindowEventHandler, VclWindowEvent&, void );
+ DECL_LINK(PopupModeEndHdl, weld::Popover&, void);
AnnotationManagerImpl& mrManager;
css::uno::Reference< css::office::XAnnotation > mxAnnotation;
- VclPtr<AnnotationWindow> mpAnnotationWindow;
+ std::unique_ptr<AnnotationWindow> mpAnnotationWindow;
Color maColor;
int mnIndex;
const vcl::Font& mrFont;
diff --git a/sd/source/ui/annotations/annotationwindow.cxx b/sd/source/ui/annotations/annotationwindow.cxx
index 408eb1a548bd..89ffb94ff106 100644
--- a/sd/source/ui/annotations/annotationwindow.cxx
+++ b/sd/source/ui/annotations/annotationwindow.cxx
@@ -147,20 +147,7 @@ bool AnnotationTextWindow::KeyInput(const KeyEvent& rKeyEvt)
return bDone;
}
-/************** AnnotationWindow***********************************++*/
-AnnotationWindow::AnnotationWindow(DrawDocShell* pDocShell, vcl::Window* pParent)
- : FloatingWindow(pParent, WB_BORDER)
- , mxContents(VclPtr<AnnotationContents>::Create(this, pDocShell))
-{
- EnableAlwaysOnTop();
-}
-
-AnnotationWindow::~AnnotationWindow()
-{
- disposeOnce();
-}
-
-AnnotationTextWindow::AnnotationTextWindow(AnnotationContents& rContents)
+AnnotationTextWindow::AnnotationTextWindow(AnnotationWindow& rContents)
: mrContents(rContents)
{
}
@@ -220,41 +207,37 @@ void AnnotationTextWindow::SetDrawingArea(weld::DrawingArea* pDrawingArea)
}
// see SwAnnotationWin in sw for something similar
-AnnotationContents::AnnotationContents(vcl::Window* pParent, DrawDocShell* pDocShell)
- : InterimItemWindow(pParent, "modules/simpress/ui/annotation.ui", "Annotation")
+AnnotationWindow::AnnotationWindow(weld::Window* pParent, const ::tools::Rectangle& rRect,
+ DrawDocShell* pDocShell,
+ const Reference<XAnnotation>& xAnnotation)
+ : mxBuilder(Application::CreateBuilder(pParent, "modules/simpress/ui/annotation.ui"))
+ , mxPopover(mxBuilder->weld_popover("Annotation"))
+ , mxContainer(mxBuilder->weld_widget("container"))
, mpDocShell(pDocShell)
, mpDoc(pDocShell->GetDoc())
, mbReadonly(pDocShell->IsReadOnly())
, mbProtected(false)
{
-}
+ mxContainer->set_size_request(320, 240);
+ mxPopover->popup_at_rect(pParent, rRect);
-void AnnotationContents::dispose()
-{
- mxTextControlWin.reset();
- mxTextControl.reset();
+ InitControls();
+ setAnnotation(xAnnotation);
+ FillMenuButton();
- mxMeta.reset();
- mxVScrollbar.reset();
+ DoResize();
- mxMenuButton.reset();
-
- mpOutliner.reset();
- mpOutlinerView.reset();
-
- InterimItemWindow::dispose();
+ mxTextControl->GrabFocus();
}
-void AnnotationWindow::dispose()
+AnnotationWindow::~AnnotationWindow()
{
- mxContents.disposeAndClear();
- FloatingWindow::dispose();
}
-void AnnotationContents::InitControls()
+void AnnotationWindow::InitControls()
{
// window control for author and date
- mxMeta = m_xBuilder->weld_label("meta");
+ mxMeta = mxBuilder->weld_label("meta");
mxMeta->set_direction(AllSettings::GetLayoutRTL());
maLabelFont = Application::GetSettings().GetStyleSettings().GetLabelFont();
@@ -267,7 +250,6 @@ void AnnotationContents::InitControls()
mpOutliner.reset( new ::Outliner(GetAnnotationPool(),OutlinerMode::TextObject) );
SdDrawDocument::SetCalcFieldValueHdl( mpOutliner.get() );
mpOutliner->SetUpdateMode( true );
- Rescale();
if (OutputDevice* pDev = mpDoc->GetRefDevice())
mpOutliner->SetRefDevice( pDev );
@@ -276,27 +258,29 @@ void AnnotationContents::InitControls()
mpOutliner->InsertView(mpOutlinerView.get() );
//create Scrollbars
- mxVScrollbar = m_xBuilder->weld_scrolled_window("scrolledwindow", true);
+ mxVScrollbar = mxBuilder->weld_scrolled_window("scrolledwindow", true);
// actual window which holds the user text
mxTextControl.reset(new AnnotationTextWindow(*this));
- mxTextControlWin.reset(new weld::CustomWeld(*m_xBuilder, "editview", *mxTextControl));
+ mxTextControlWin.reset(new weld::CustomWeld(*mxBuilder, "editview", *mxTextControl));
mxTextControl->SetPointer(PointerStyle::Text);
+ Rescale();
+ OutputDevice& rDevice = mxTextControl->GetDrawingArea()->get_ref_device();
+
mxVScrollbar->set_direction(false);
- mxVScrollbar->connect_vadjustment_changed(LINK(this, AnnotationContents, ScrollHdl));
+ mxVScrollbar->connect_vadjustment_changed(LINK(this, AnnotationWindow, ScrollHdl));
mpOutlinerView->SetBackgroundColor(COL_TRANSPARENT);
- mpOutlinerView->SetOutputArea( PixelToLogic( ::tools::Rectangle(0,0,1,1) ) );
+ mpOutlinerView->SetOutputArea(rDevice.PixelToLogic(::tools::Rectangle(0, 0, 1, 1)));
- mxMenuButton = m_xBuilder->weld_menu_button("menubutton");
+ mxMenuButton = mxBuilder->weld_menu_button("menubutton");
if (mbReadonly)
mxMenuButton->hide();
else
{
mxMenuButton->set_size_request(METABUTTON_WIDTH, METABUTTON_HEIGHT);
- mxMenuButton->connect_toggled(LINK(this, AnnotationContents, MenuButtonToggledHdl));
- mxMenuButton->connect_selected(LINK(this, AnnotationContents, MenuItemSelectedHdl));
+ mxMenuButton->connect_selected(LINK(this, AnnotationWindow, MenuItemSelectedHdl));
}
EEControlBits nCntrl = mpOutliner->GetControlWord();
@@ -315,7 +299,7 @@ void AnnotationContents::InitControls()
mxTextControl->GrabFocus();
}
-IMPL_LINK(AnnotationContents, MenuItemSelectedHdl, const OString&, rIdent, void)
+IMPL_LINK(AnnotationWindow, MenuItemSelectedHdl, const OString&, rIdent, void)
{
SfxDispatcher* pDispatcher = mpDocShell->GetViewShell()->GetViewFrame()->GetDispatcher();
if (!pDispatcher)
@@ -343,11 +327,8 @@ IMPL_LINK(AnnotationContents, MenuItemSelectedHdl, const OString&, rIdent, void)
pDispatcher->Execute( SID_DELETEALL_POSTIT );
}
-IMPL_LINK_NOARG(AnnotationContents, MenuButtonToggledHdl, weld::ToggleButton&, void)
+void AnnotationWindow::FillMenuButton()
{
- if (!mxMenuButton->get_active())
- return;
-
SvtUserOptions aUserOptions;
OUString sCurrentAuthor( aUserOptions.GetFullName() );
OUString sAuthor( mxAnnotation->getAuthor() );
@@ -367,13 +348,19 @@ IMPL_LINK_NOARG(AnnotationContents, MenuButtonToggledHdl, weld::ToggleButton&, v
mxMenuButton->set_item_visible(".uno:DeleteAllAnnotation", !mbReadonly);
}
-void AnnotationContents::StartEdit()
+void AnnotationWindow::StartEdit()
{
GetOutlinerView()->SetSelection(ESelection(EE_PARA_MAX_COUNT,EE_TEXTPOS_MAX_COUNT,EE_PARA_MAX_COUNT,EE_TEXTPOS_MAX_COUNT));
GetOutlinerView()->ShowCursor();
}
-void AnnotationContents::Rescale()
+void AnnotationWindow::SetMapMode(const MapMode& rNewMapMode)
+{
+ OutputDevice& rDevice = mxTextControl->GetDrawingArea()->get_ref_device();
+ rDevice.SetMapMode(rNewMapMode);
+}
+
+void AnnotationWindow::Rescale()
{
MapMode aMode(MapUnit::Map100thMM);
aMode.SetOrigin( Point() );
@@ -391,21 +378,15 @@ void AnnotationContents::Rescale()
void AnnotationWindow::DoResize()
{
- mxContents->SetSizePixel(GetSizePixel());
- mxContents->Show();
+ OutputDevice& rDevice = mxTextControl->GetDrawingArea()->get_ref_device();
- mxContents->DoResize();
-}
-
-void AnnotationContents::DoResize()
-{
- ::tools::Long aHeight = GetSizePixel().Height();
- ::tools::ULong aWidth = GetSizePixel().Width();
+ ::tools::Long aHeight = mxContainer->get_preferred_size().Height();
+ ::tools::ULong aWidth = mxContainer->get_preferred_size().Width();
aHeight -= POSTIT_META_HEIGHT;
- mpOutliner->SetPaperSize( PixelToLogic( Size(aWidth, aHeight) ) ) ;
- ::tools::Long aTextHeight = LogicToPixel( mpOutliner->CalcTextSize()).Height();
+ mpOutliner->SetPaperSize( rDevice.PixelToLogic( Size(aWidth, aHeight) ) ) ;
+ ::tools::Long aTextHeight = rDevice.LogicToPixel(mpOutliner->CalcTextSize()).Height();
if( aTextHeight > aHeight )
{
@@ -418,7 +399,7 @@ void AnnotationContents::DoResize()
mxVScrollbar->set_vpolicy(VclPolicyType::NEVER);
}
- ::tools::Rectangle aOutputArea = PixelToLogic(::tools::Rectangle(0, 0, aWidth, aHeight));
+ ::tools::Rectangle aOutputArea = rDevice.PixelToLogic(::tools::Rectangle(0, 0, aWidth, aHeight));
if (mxVScrollbar->get_vpolicy() == VclPolicyType::NEVER)
{
// if we do not have a scrollbar anymore, we want to see the complete text
@@ -430,8 +411,8 @@ void AnnotationContents::DoResize()
int nUpper = mpOutliner->GetTextHeight();
int nCurrentDocPos = mpOutlinerView->GetVisArea().Top();
int nStepIncrement = mpOutliner->GetTextHeight() / 10;
- int nPageIncrement = PixelToLogic(Size(0,aHeight)).Height() * 8 / 10;
- int nPageSize = PixelToLogic(Size(0,aHeight)).Height();
+ int nPageIncrement = rDevice.PixelToLogic(Size(0,aHeight)).Height() * 8 / 10;
+ int nPageSize = rDevice.PixelToLogic(Size(0,aHeight)).Height();
/* limit the page size to below nUpper because gtk's gtk_scrolled_window_start_deceleration has
effectively...
@@ -447,12 +428,12 @@ void AnnotationContents::DoResize()
nStepIncrement, nPageIncrement, nPageSize);
}
-void AnnotationContents::SetScrollbar()
+void AnnotationWindow::SetScrollbar()
{
mxVScrollbar->vadjustment_set_value(mpOutlinerView->GetVisArea().Top());
}
-void AnnotationContents::ResizeIfNecessary(::tools::Long aOldHeight, ::tools::Long aNewHeight)
+void AnnotationWindow::ResizeIfNecessary(::tools::Long aOldHeight, ::tools::Long aNewHeight)
{
if (aOldHeight != aNewHeight)
DoResize();
@@ -460,7 +441,7 @@ void AnnotationContents::ResizeIfNecessary(::tools::Long aOldHeight, ::tools::Lo
SetScrollbar();
}
-void AnnotationContents::SetLanguage(const SvxLanguageItem &aNewItem)
+void AnnotationWindow::SetLanguage(const SvxLanguageItem &aNewItem)
{
mpOutliner->SetModifyHdl( Link<LinkParamNone*,void>() );
ESelection aOld = GetOutlinerView()->GetSelection();
@@ -473,10 +454,10 @@ void AnnotationContents::SetLanguage(const SvxLanguageItem &aNewItem)
GetOutlinerView()->SetSelection(aOld);
- Invalidate();
+ mxTextControl->Invalidate();
}
-void AnnotationContents::ToggleInsMode()
+void AnnotationWindow::ToggleInsMode()
{
if( mpOutlinerView )
{
@@ -486,12 +467,13 @@ void AnnotationContents::ToggleInsMode()
}
}
-::tools::Long AnnotationContents::GetPostItTextHeight()
+::tools::Long AnnotationWindow::GetPostItTextHeight()
{
- return mpOutliner ? LogicToPixel(mpOutliner->CalcTextSize()).Height() : 0;
+ OutputDevice& rDevice = mxTextControl->GetDrawingArea()->get_ref_device();
+ return mpOutliner ? rDevice.LogicToPixel(mpOutliner->CalcTextSize()).Height() : 0;
}
-IMPL_LINK(AnnotationContents, ScrollHdl, weld::ScrolledWindow&, rScrolledWindow, void)
+IMPL_LINK(AnnotationWindow, ScrollHdl, weld::ScrolledWindow&, rScrolledWindow, void)
{
::tools::Long nDiff = GetOutlinerView()->GetEditView().GetVisArea().Top() - rScrolledWindow.vadjustment_get_value();
GetOutlinerView()->Scroll( 0, nDiff );
@@ -507,7 +489,7 @@ TextApiObject* getTextApiObject( const Reference< XAnnotation >& xAnnotation )
return nullptr;
}
-void AnnotationContents::setAnnotation( const Reference< XAnnotation >& xAnnotation )
+void AnnotationWindow::setAnnotation( const Reference< XAnnotation >& xAnnotation )
{
if( (xAnnotation == mxAnnotation) || !xAnnotation.is() )
return;
@@ -531,7 +513,7 @@ void AnnotationContents::setAnnotation( const Reference< XAnnotation >& xAnnotat
mpOutliner->ClearModifyFlag();
mpOutliner->GetUndoManager().Clear();
- Invalidate();
+//TODO Invalidate();
OUString sMeta( xAnnotation->getAuthor() );
OUString sDateTime( getAnnotationDateTimeString(xAnnotation) );
@@ -546,18 +528,17 @@ void AnnotationContents::setAnnotation( const Reference< XAnnotation >& xAnnotat
mxMeta->set_label(sMeta);
}
-void AnnotationContents::SetColor()
+void AnnotationWindow::SetColor()
{
sal_uInt16 nAuthorIdx = mpDoc->GetAnnotationAuthorIndex( mxAnnotation->getAuthor() );
- const bool bHighContrast = Application::GetSettings().GetStyleSettings().GetHighContrastMode();
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ const bool bHighContrast = rStyleSettings.GetHighContrastMode();
if( bHighContrast )
{
- StyleSettings aStyleSettings = GetSettings().GetStyleSettings();
-
- maColor = aStyleSettings.GetWindowColor();
+ maColor = rStyleSettings.GetWindowColor();
maColorDark = maColor;
- maColorLight = aStyleSettings.GetWindowTextColor();
+ maColorLight = rStyleSettings.GetWindowTextColor();
}
else
{
@@ -571,7 +552,7 @@ void AnnotationContents::SetColor()
mpOutliner->ForceAutoColor( bHighContrast || aOptions.GetIsAutomaticFontColor() );
}
- m_xContainer->set_background(maColor);
+ mxPopover->set_background(maColor);
mxMenuButton->set_background(maColor);
mxMeta->set_font_color(bHighContrast ? maColorLight : maColorDark);
@@ -582,13 +563,7 @@ void AnnotationContents::SetColor()
mxVScrollbar->set_scroll_thickness(GetPrefScrollbarWidth());
}
-void AnnotationContents::GetFocus()
-{
- if (mxTextControl)
- mxTextControl->GrabFocus();
-}
-
-void AnnotationContents::SaveToDocument()
+void AnnotationWindow::SaveToDocument()
{
Reference< XAnnotation > xAnnotation( mxAnnotation );
@@ -819,14 +794,6 @@ bool AnnotationTextWindow::Command(const CommandEvent& rCEvt)
return WeldEditView::Command(rCEvt);
}
-void AnnotationWindow::GetFocus()
-{
- if (mxContents)
- mxContents->GrabFocus();
- else
- FloatingWindow::GetFocus();
-}
-
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/annotations/annotationwindow.hxx b/sd/source/ui/annotations/annotationwindow.hxx
index 0daa64f975c5..fe5023413ed4 100644
--- a/sd/source/ui/annotations/annotationwindow.hxx
+++ b/sd/source/ui/annotations/annotationwindow.hxx
@@ -19,8 +19,7 @@
#pragma once
-#include <vcl/floatwin.hxx>
-#include <vcl/InterimItemWindow.hxx>
+#include <vcl/weld.hxx>
#include <tools/long.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
#include <svx/weldeditview.hxx>
@@ -35,19 +34,18 @@ class SdDrawDocument;
namespace sd {
class AnnotationManagerImpl;
-class AnnotationWindow;
class DrawDocShell;
class TextApiObject;
-class AnnotationContents;
+class AnnotationWindow;
class AnnotationTextWindow : public WeldEditView
{
private:
- AnnotationContents& mrContents;
+ AnnotationWindow& mrContents;
public:
- AnnotationTextWindow(AnnotationContents& rContents);
+ AnnotationTextWindow(AnnotationWindow& rContents);
virtual EditView* GetEditView() const override;
@@ -62,9 +60,13 @@ public:
virtual bool Command(const CommandEvent& rCEvt) override;
};
-class AnnotationContents final : public InterimItemWindow
+class AnnotationWindow final
{
private:
+ std::unique_ptr<weld::Builder> mxBuilder;
+ std::unique_ptr<weld::Popover> mxPopover;
+ std::unique_ptr<weld::Widget> mxContainer;
+
DrawDocShell* mpDocShell;
SdDrawDocument* mpDoc;
@@ -92,19 +94,25 @@ private:
DECL_LINK(ScrollHdl, weld::ScrolledWindow&, void);
DECL_LINK(MenuItemSelectedHdl, const OString&, void);
- DECL_LINK(MenuButtonToggledHdl, weld::ToggleButton&, void);
+
+ void FillMenuButton();
+ void InitControls();
+
+ void SetMapMode(const MapMode& rNewMapMode);
+ void setAnnotation(const css::uno::Reference<css::office::XAnnotation>& xAnnotation);
static sal_Int32 GetPrefScrollbarWidth() { return 16; }
public:
- AnnotationContents(vcl::Window* pParent, DrawDocShell* pDocShell);
+ AnnotationWindow(weld::Window* pParent, const ::tools::Rectangle& rRect, DrawDocShell* pDocShell,
+ const css::uno::Reference<css::office::XAnnotation>& xAnnotation);
+
+ void connect_closed(const Link<weld::Popover&, void>& rLink) { mxPopover->connect_closed(rLink); }
- void InitControls();
void DoResize();
void ResizeIfNecessary(::tools::Long aOldHeight, ::tools::Long aNewHeight);
void SetScrollbar();
void StartEdit();
- void setAnnotation(const css::uno::Reference<css::office::XAnnotation>& xAnnotation);
const css::uno::Reference<css::office::XAnnotation>& getAnnotation() const { return mxAnnotation; }
void SaveToDocument();
@@ -123,31 +131,11 @@ public:
OutlinerView* GetOutlinerView() { return mpOutlinerView.get();}
::Outliner* GetOutliner() { return mpOutliner.get();}
- virtual ~AnnotationContents() override { disposeOnce(); }
- virtual void dispose() override;
-
- virtual void GetFocus() override;
+ ~AnnotationWindow();
void SetColor();
};
-class AnnotationWindow : public FloatingWindow
-{
- private:
- VclPtr<AnnotationContents> mxContents;
-
- public:
- AnnotationWindow( DrawDocShell* pDocShell, vcl::Window* pParent );
- virtual ~AnnotationWindow() override;
- virtual void dispose() override;
-
- AnnotationContents& GetContents() const { return *mxContents; }
-
- void DoResize();
-
- virtual void GetFocus() override;
-};
-
TextApiObject* getTextApiObject( const css::uno::Reference< css::office::XAnnotation >& xAnnotation );
diff --git a/sd/uiconfig/simpress/ui/annotation.ui b/sd/uiconfig/simpress/ui/annotation.ui
index 9daa415d28c7..49a8a300e335 100644
--- a/sd/uiconfig/simpress/ui/annotation.ui
+++ b/sd/uiconfig/simpress/ui/annotation.ui
@@ -4,115 +4,125 @@
<requires lib="gtk+" version="3.20"/>
<object class="GtkMenu" id="menu">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<child>
<object class="GtkMenuItem" id=".uno:ReplyToAnnotation">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="label" translatable="yes" context="annotationmenu|reply">_Reply</property>
- <property name="use_underline">True</property>
+ <property name="use-underline">True</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="separator">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id=".uno:DeleteAnnotation">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="label" translatable="yes" context="annotationmenu|delete">_Delete Comment</property>
- <property name="use_underline">True</property>
+ <property name="use-underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id=".uno:DeleteAllAnnotationByAuthor">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="label" translatable="yes" context="annotationmenu|deleteby">Delete All Comments b_y %1</property>
- <property name="use_underline">True</property>
+ <property name="use-underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id=".uno:DeleteAllAnnotation">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="label" translatable="yes" context="annotationmenu|deleteall">Delete _All Comments</property>
- <property name="use_underline">True</property>
+ <property name="use-underline">True</property>
</object>
</child>
</object>
- <object class="GtkBox" id="Annotation">
- <property name="visible">True</property>
+ <object class="GtkPopover" id="Annotation">
<property name="can-focus">False</property>
- <property name="events">GDK_BUTTON_MOTION_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property>
- <property name="hexpand">True</property>
- <property name="vexpand">True</property>
- <property name="orientation">vertical</property>
+ <property name="position">bottom</property>
<child>
- <object class="GtkScrolledWindow" id="scrolledwindow">
+ <object class="GtkBox" id="container">
<property name="visible">True</property>
- <property name="can-focus">True</property>
+ <property name="can-focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
- <property name="hscrollbar-policy">never</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkViewport">
+ <object class="GtkScrolledWindow" id="scrolledwindow">
<property name="visible">True</property>
- <property name="can-focus">False</property>
+ <property name="can-focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
+ <property name="hscrollbar-policy">never</property>
<child>
- <object class="GtkBox">
+ <object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
- <property name="orientation">vertical</property>
<child>
- <object class="GtkDrawingArea" id="editview">
+ <object class="GtkBox">
<property name="visible">True</property>
- <property name="can-focus">True</property>
- <property name="events">GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK</property>
+ <property name="can-focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkDrawingArea" id="editview">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="events">GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
</child>
</object>
</child>
</object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
</child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
- <property name="hexpand">True</property>
- <property name="orientation">vertical</property>
<child>
- <object class="GtkLabel" id="meta">
+ <object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
- <property name="label">label</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
+ <property name="hexpand">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="meta">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label">label</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
@@ -120,32 +130,32 @@
<property name="position">0</property>
</packing>
</child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkMenuButton" id="menubutton">
- <property name="visible">True</property>
- <property name="can-focus">True</property>
- <property name="focus-on-click">False</property>
- <property name="label" translatable="no"></property>
- <property name="receives-default">True</property>
- <property name="valign">start</property>
- <property name="margin-end">10</property>
- <property name="margin-top">5</property>
- <property name="relief">none</property>
- <property name="draw-indicator">True</property>
- <property name="popup">menu</property>
<child>
- <placeholder/>
+ <object class="GtkMenuButton" id="menubutton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="label" translatable="no"></property>
+ <property name="receives-default">True</property>
+ <property name="valign">start</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">5</property>
+ <property name="relief">none</property>
+ <property name="draw-indicator">True</property>
+ <property name="popup">menu</property>
+ <child>
+ <placeholder/>
+ </child>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
- <style>
- <class name="small-button"/>
- </style>
</object>
<packing>
<property name="expand">False</property>
@@ -154,11 +164,6 @@
</packing>
</child>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
</child>
</object>
</interface>