summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-02-23 13:42:55 +0000
committerCaolán McNamara <caolanm@redhat.com>2019-02-27 22:18:22 +0100
commitcfe41185bc8514949d1938ee1d7cd56968682510 (patch)
tree8d990aae964cf0ed6ed49c06a86133057481ae7d /vcl
parent3e1306c283c2aca372a8384801a1e206f208e1cb (diff)
weld LicenseDialogImpl
Change-Id: I4b2dbd2446779e7179d2b79bf81cc2ff879377bf Reviewed-on: https://gerrit.libreoffice.org/68389 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/app/customweld.cxx12
-rw-r--r--vcl/source/app/salvtables.cxx116
-rw-r--r--vcl/source/edit/vclmedit.cxx155
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx373
4 files changed, 397 insertions, 259 deletions
diff --git a/vcl/source/app/customweld.cxx b/vcl/source/app/customweld.cxx
index 110d2e727a0c..058ee0b7671d 100644
--- a/vcl/source/app/customweld.cxx
+++ b/vcl/source/app/customweld.cxx
@@ -46,19 +46,19 @@ IMPL_LINK(CustomWeld, DoPaint, weld::DrawingArea::draw_args, aPayload, void)
m_rWidgetController.Paint(aPayload.first, aPayload.second);
}
-IMPL_LINK(CustomWeld, DoMouseButtonDown, const MouseEvent&, rMEvt, void)
+IMPL_LINK(CustomWeld, DoMouseButtonDown, const MouseEvent&, rMEvt, bool)
{
- m_rWidgetController.MouseButtonDown(rMEvt);
+ return m_rWidgetController.MouseButtonDown(rMEvt);
}
-IMPL_LINK(CustomWeld, DoMouseMove, const MouseEvent&, rMEvt, void)
+IMPL_LINK(CustomWeld, DoMouseMove, const MouseEvent&, rMEvt, bool)
{
- m_rWidgetController.MouseMove(rMEvt);
+ return m_rWidgetController.MouseMove(rMEvt);
}
-IMPL_LINK(CustomWeld, DoMouseButtonUp, const MouseEvent&, rMEvt, void)
+IMPL_LINK(CustomWeld, DoMouseButtonUp, const MouseEvent&, rMEvt, bool)
{
- m_rWidgetController.MouseButtonUp(rMEvt);
+ return m_rWidgetController.MouseButtonUp(rMEvt);
}
IMPL_LINK_NOARG(CustomWeld, DoGetFocus, weld::Widget&, void) { m_rWidgetController.GetFocus(); }
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index d865351bec06..ce61bf6c69e5 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -499,6 +499,24 @@ public:
weld::Widget::connect_size_allocate(rLink);
}
+ virtual void connect_mouse_press(const Link<const MouseEvent&, bool>& rLink) override
+ {
+ ensure_event_listener();
+ weld::Widget::connect_mouse_press(rLink);
+ }
+
+ virtual void connect_mouse_move(const Link<const MouseEvent&, bool>& rLink) override
+ {
+ ensure_event_listener();
+ weld::Widget::connect_mouse_move(rLink);
+ }
+
+ virtual void connect_mouse_release(const Link<const MouseEvent&, bool>& rLink) override
+ {
+ ensure_event_listener();
+ weld::Widget::connect_mouse_release(rLink);
+ }
+
virtual void connect_key_press(const Link<const KeyEvent&, bool>& rLink) override
{
ensure_key_listener();
@@ -604,6 +622,21 @@ void SalInstanceWidget::HandleEventListener(VclWindowEvent& rEvent)
m_aFocusOutHdl.Call(*this);
else if (rEvent.GetId() == VclEventId::WindowResize)
m_aSizeAllocateHdl.Call(m_xWidget->GetSizePixel());
+ else if (rEvent.GetId() == VclEventId::WindowMouseButtonDown)
+ {
+ const MouseEvent* pMouseEvent = static_cast<const MouseEvent*>(rEvent.GetData());
+ m_aMousePressHdl.Call(*pMouseEvent);
+ }
+ else if (rEvent.GetId() == VclEventId::WindowMouseButtonUp)
+ {
+ const MouseEvent* pMouseEvent = static_cast<const MouseEvent*>(rEvent.GetData());
+ m_aMouseReleaseHdl.Call(*pMouseEvent);
+ }
+ else if (rEvent.GetId() == VclEventId::WindowMouseMove)
+ {
+ const MouseEvent* pMouseEvent = static_cast<const MouseEvent*>(rEvent.GetData());
+ m_aMouseMotionHdl.Call(*pMouseEvent);
+ }
}
bool SalInstanceWidget::HandleKeyEventListener(VclWindowEvent& rEvent)
@@ -624,7 +657,6 @@ bool SalInstanceWidget::HandleKeyEventListener(VclWindowEvent& rEvent)
return false;
}
-
IMPL_LINK(SalInstanceWidget, EventListener, VclWindowEvent&, rEvent, void)
{
HandleEventListener(rEvent);
@@ -1256,11 +1288,11 @@ public:
}
};
-IMPL_LINK_NOARG(SalInstanceScrolledWindow, VscrollHdl, ScrollBar*, void)
+IMPL_LINK(SalInstanceScrolledWindow, VscrollHdl, ScrollBar*, pScrollBar, void)
{
signal_vadjustment_changed();
if (!m_bUserManagedScrolling)
- m_aOrigVScrollHdl.Call(&m_xScrolledWindow->getVertScrollBar());
+ m_aOrigVScrollHdl.Call(pScrollBar);
}
IMPL_LINK_NOARG(SalInstanceScrolledWindow, HscrollHdl, ScrollBar*, void)
@@ -3241,14 +3273,19 @@ class SalInstanceTextView : public SalInstanceContainer, public virtual weld::Te
{
private:
VclPtr<VclMultiLineEdit> m_xTextView;
+ Link<ScrollBar*,void> m_aOrigVScrollHdl;
DECL_LINK(ChangeHdl, Edit&, void);
+ DECL_LINK(VscrollHdl, ScrollBar*, void);
public:
SalInstanceTextView(VclMultiLineEdit* pTextView, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
: SalInstanceContainer(pTextView, pBuilder, bTakeOwnership)
, m_xTextView(pTextView)
{
m_xTextView->SetModifyHdl(LINK(this, SalInstanceTextView, ChangeHdl));
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ m_aOrigVScrollHdl = rVertScrollBar.GetScrollHdl();
+ rVertScrollBar.SetScrollHdl(LINK(this, SalInstanceTextView, VscrollHdl));
}
virtual void set_text(const OUString& rText) override
@@ -3299,12 +3336,54 @@ public:
m_xTextView->SetControlFont(aFont);
}
+ virtual int vadjustment_get_value() const override
+ {
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ return rVertScrollBar.GetThumbPos();
+ }
+
+ virtual void vadjustment_set_value(int value) override
+ {
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ rVertScrollBar.SetThumbPos(value);
+ m_aOrigVScrollHdl.Call(&rVertScrollBar);
+ }
+
+ virtual int vadjustment_get_upper() const override
+ {
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ return rVertScrollBar.GetRangeMax();
+ }
+
+ virtual int vadjustment_get_lower() const override
+ {
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ return rVertScrollBar.GetRangeMin();
+ }
+
+ virtual int vadjustment_get_page_size() const override
+ {
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ return rVertScrollBar.GetVisibleSize();
+ }
+
virtual ~SalInstanceTextView() override
{
- m_xTextView->SetModifyHdl(Link<Edit&, void>());
+ if (!m_xTextView->IsDisposed())
+ {
+ m_xTextView->SetModifyHdl(Link<Edit&, void>());
+ ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
+ rVertScrollBar.SetScrollHdl(m_aOrigVScrollHdl);
+ }
}
};
+IMPL_LINK(SalInstanceTextView, VscrollHdl, ScrollBar*, pScrollBar, void)
+{
+ signal_vadjustment_changed();
+ m_aOrigVScrollHdl.Call(pScrollBar);
+}
+
IMPL_LINK_NOARG(SalInstanceTextView, ChangeHdl, Edit&, void)
{
signal_changed();
@@ -3354,9 +3433,9 @@ private:
typedef std::pair<vcl::RenderContext&, const tools::Rectangle&> target_and_area;
DECL_LINK(PaintHdl, target_and_area, void);
DECL_LINK(ResizeHdl, const Size&, void);
- DECL_LINK(MousePressHdl, const MouseEvent&, void);
- DECL_LINK(MouseMoveHdl, const MouseEvent&, void);
- DECL_LINK(MouseReleaseHdl, const MouseEvent&, void);
+ DECL_LINK(MousePressHdl, const MouseEvent&, bool);
+ DECL_LINK(MouseMoveHdl, const MouseEvent&, bool);
+ DECL_LINK(MouseReleaseHdl, const MouseEvent&, bool);
DECL_LINK(KeyPressHdl, const KeyEvent&, bool);
DECL_LINK(KeyReleaseHdl, const KeyEvent&, bool);
DECL_LINK(StyleUpdatedHdl, VclDrawingArea&, void);
@@ -3368,7 +3447,10 @@ private:
// in VclDrawingArea
virtual void HandleEventListener(VclWindowEvent& rEvent) override
{
- if (rEvent.GetId() == VclEventId::WindowResize)
+ if (rEvent.GetId() == VclEventId::WindowResize ||
+ rEvent.GetId() == VclEventId::WindowMouseButtonDown ||
+ rEvent.GetId() == VclEventId::WindowMouseButtonUp ||
+ rEvent.GetId() == VclEventId::WindowMouseMove)
{
return;
}
@@ -3471,9 +3553,9 @@ public:
m_xDrawingArea->SetQueryTooltipHdl(Link<tools::Rectangle&, OUString>());
m_xDrawingArea->SetPopupMenuHdl(Link<const Point&, bool>());
m_xDrawingArea->SetStyleUpdatedHdl(Link<VclDrawingArea&, void>());
- m_xDrawingArea->SetMousePressHdl(Link<const MouseEvent&, void>());
- m_xDrawingArea->SetMouseMoveHdl(Link<const MouseEvent&, void>());
- m_xDrawingArea->SetMouseReleaseHdl(Link<const MouseEvent&, void>());
+ m_xDrawingArea->SetMousePressHdl(Link<const MouseEvent&, bool>());
+ m_xDrawingArea->SetMouseMoveHdl(Link<const MouseEvent&, bool>());
+ m_xDrawingArea->SetMouseReleaseHdl(Link<const MouseEvent&, bool>());
m_xDrawingArea->SetKeyPressHdl(Link<const KeyEvent&, bool>());
m_xDrawingArea->SetKeyReleaseHdl(Link<const KeyEvent&, bool>());
m_xDrawingArea->SetResizeHdl(Link<const Size&, void>());
@@ -3499,19 +3581,19 @@ IMPL_LINK(SalInstanceDrawingArea, ResizeHdl, const Size&, rSize, void)
m_aSizeAllocateHdl.Call(rSize);
}
-IMPL_LINK(SalInstanceDrawingArea, MousePressHdl, const MouseEvent&, rEvent, void)
+IMPL_LINK(SalInstanceDrawingArea, MousePressHdl, const MouseEvent&, rEvent, bool)
{
- m_aMousePressHdl.Call(rEvent);
+ return m_aMousePressHdl.Call(rEvent);
}
-IMPL_LINK(SalInstanceDrawingArea, MouseMoveHdl, const MouseEvent&, rEvent, void)
+IMPL_LINK(SalInstanceDrawingArea, MouseMoveHdl, const MouseEvent&, rEvent, bool)
{
- m_aMouseMotionHdl.Call(rEvent);
+ return m_aMouseMotionHdl.Call(rEvent);
}
-IMPL_LINK(SalInstanceDrawingArea, MouseReleaseHdl, const MouseEvent&, rEvent, void)
+IMPL_LINK(SalInstanceDrawingArea, MouseReleaseHdl, const MouseEvent&, rEvent, bool)
{
- m_aMouseReleaseHdl.Call(rEvent);
+ return m_aMouseReleaseHdl.Call(rEvent);
}
IMPL_LINK(SalInstanceDrawingArea, KeyPressHdl, const KeyEvent&, rEvent, bool)
diff --git a/vcl/source/edit/vclmedit.cxx b/vcl/source/edit/vclmedit.cxx
index 77a168e9ef14..1a16612c650c 100644
--- a/vcl/source/edit/vclmedit.cxx
+++ b/vcl/source/edit/vclmedit.cxx
@@ -107,15 +107,20 @@ public:
void InitFromStyle( WinBits nWinStyle );
TextWindow* GetTextWindow() { return mpTextWindow; }
- ScrollBar* GetHScrollBar() { return mpHScrollBar; }
- ScrollBar* GetVScrollBar() { return mpVScrollBar; }
+ ScrollBar& GetHScrollBar() { return *mpHScrollBar; }
+ ScrollBar& GetVScrollBar() { return *mpVScrollBar; }
};
ImpVclMEdit::ImpVclMEdit( VclMultiLineEdit* pEdt, WinBits nWinStyle )
: pVclMultiLineEdit(pEdt)
, mpTextWindow(VclPtr<TextWindow>::Create(pEdt))
+ , mpHScrollBar(VclPtr<ScrollBar>::Create(pVclMultiLineEdit, WB_HSCROLL|WB_DRAG))
+ , mpVScrollBar(VclPtr<ScrollBar>::Create(pVclMultiLineEdit, WB_VSCROLL|WB_DRAG))
+ , mpScrollBox(VclPtr<ScrollBarBox>::Create(pVclMultiLineEdit, WB_SIZEABLE))
, mnTextWidth(0)
{
+ mpVScrollBar->SetScrollHdl( LINK( this, ImpVclMEdit, ScrollHdl ) );
+ mpHScrollBar->SetScrollHdl( LINK( this, ImpVclMEdit, ScrollHdl ) );
mpTextWindow->Show();
InitFromStyle( nWinStyle );
StartListening( *mpTextWindow->GetTextEngine() );
@@ -123,9 +128,9 @@ ImpVclMEdit::ImpVclMEdit( VclMultiLineEdit* pEdt, WinBits nWinStyle )
void ImpVclMEdit::ImpUpdateSrollBarVis( WinBits nWinStyle )
{
- const bool bHaveVScroll = (nullptr != mpVScrollBar);
- const bool bHaveHScroll = (nullptr != mpHScrollBar);
- const bool bHaveScrollBox = (nullptr != mpScrollBox);
+ const bool bHaveVScroll = mpVScrollBar->IsVisible();
+ const bool bHaveHScroll = mpHScrollBar->IsVisible();
+ const bool bHaveScrollBox = mpScrollBox->IsVisible();
bool bNeedVScroll = ( nWinStyle & WB_VSCROLL ) == WB_VSCROLL;
const bool bNeedHScroll = ( nWinStyle & WB_HSCROLL ) == WB_HSCROLL;
@@ -146,39 +151,19 @@ void ImpVclMEdit::ImpUpdateSrollBarVis( WinBits nWinStyle )
bool bScrollbarsChanged = false;
if ( bHaveVScroll != bNeedVScroll )
{
- mpVScrollBar.disposeAndClear();
- mpVScrollBar = bNeedVScroll ? VclPtr<ScrollBar>::Create( pVclMultiLineEdit, WB_VSCROLL|WB_DRAG ) : nullptr;
-
- if ( bNeedVScroll )
- {
- mpVScrollBar->Show();
- mpVScrollBar->SetScrollHdl( LINK( this, ImpVclMEdit, ScrollHdl ) );
- }
-
+ mpVScrollBar->Show(bNeedVScroll);
bScrollbarsChanged = true;
}
if ( bHaveHScroll != bNeedHScroll )
{
- mpHScrollBar.disposeAndClear();
- mpHScrollBar = bNeedHScroll ? VclPtr<ScrollBar>::Create( pVclMultiLineEdit, WB_HSCROLL|WB_DRAG ) : nullptr;
-
- if ( bNeedHScroll )
- {
- mpHScrollBar->Show();
- mpHScrollBar->SetScrollHdl( LINK( this, ImpVclMEdit, ScrollHdl ) );
- }
-
+ mpHScrollBar->Show(bNeedHScroll);
bScrollbarsChanged = true;
}
if ( bHaveScrollBox != bNeedScrollBox )
{
- mpScrollBox.disposeAndClear();
- mpScrollBox = bNeedScrollBox ? VclPtr<ScrollBarBox>::Create( pVclMultiLineEdit, WB_SIZEABLE ) : nullptr;
-
- if ( bNeedScrollBox )
- mpScrollBox->Show();
+ mpScrollBox->Show(bNeedScrollBox);
}
if ( bScrollbarsChanged )
@@ -229,46 +214,32 @@ ImpVclMEdit::~ImpVclMEdit()
void ImpVclMEdit::ImpSetScrollBarRanges()
{
- if ( mpVScrollBar )
- {
- const long nTextHeight = mpTextWindow->GetTextEngine()->GetTextHeight();
- mpVScrollBar->SetRange( Range( 0, nTextHeight-1 ) );
- }
- if ( mpHScrollBar )
- {
-// sal_uLong nTextWidth = mpTextWindow->GetTextEngine()->CalcTextWidth();
- // there is no Notify by width change
-// sal_uLong nW = Max( (sal_uLong)mpTextWindow->GetOutputSizePixel().Width()*5, (sal_uLong)nTextWidth );
-// mpHScrollBar->SetRange( Range( 0, (long)nW ) );
- mpHScrollBar->SetRange( Range( 0, mnTextWidth-1 ) );
- }
+ const long nTextHeight = mpTextWindow->GetTextEngine()->GetTextHeight();
+ mpVScrollBar->SetRange( Range( 0, nTextHeight-1 ) );
+
+ mpHScrollBar->SetRange( Range( 0, mnTextWidth-1 ) );
}
void ImpVclMEdit::ImpInitScrollBars()
{
static const sal_Unicode sampleChar = { 'x' };
- if ( mpHScrollBar || mpVScrollBar )
- {
- ImpSetScrollBarRanges();
- Size aCharBox;
- aCharBox.setWidth( mpTextWindow->GetTextWidth( OUString(sampleChar) ) );
- aCharBox.setHeight( mpTextWindow->GetTextHeight() );
- Size aOutSz = mpTextWindow->GetOutputSizePixel();
- if ( mpHScrollBar )
- {
- mpHScrollBar->SetVisibleSize( aOutSz.Width() );
- mpHScrollBar->SetPageSize( aOutSz.Width() * 8 / 10 );
- mpHScrollBar->SetLineSize( aCharBox.Width()*10 );
- ImpSetHScrollBarThumbPos();
- }
- if ( mpVScrollBar )
- {
- mpVScrollBar->SetVisibleSize( aOutSz.Height() );
- mpVScrollBar->SetPageSize( aOutSz.Height() * 8 / 10 );
- mpVScrollBar->SetLineSize( aCharBox.Height() );
- mpVScrollBar->SetThumbPos( mpTextWindow->GetTextView()->GetStartDocPos().Y() );
- }
- }
+
+ ImpSetScrollBarRanges();
+
+ Size aCharBox;
+ aCharBox.setWidth( mpTextWindow->GetTextWidth( OUString(sampleChar) ) );
+ aCharBox.setHeight( mpTextWindow->GetTextHeight() );
+ Size aOutSz = mpTextWindow->GetOutputSizePixel();
+
+ mpHScrollBar->SetVisibleSize( aOutSz.Width() );
+ mpHScrollBar->SetPageSize( aOutSz.Width() * 8 / 10 );
+ mpHScrollBar->SetLineSize( aCharBox.Width()*10 );
+ ImpSetHScrollBarThumbPos();
+
+ mpVScrollBar->SetVisibleSize( aOutSz.Height() );
+ mpVScrollBar->SetPageSize( aOutSz.Height() * 8 / 10 );
+ mpVScrollBar->SetLineSize( aCharBox.Height() );
+ mpVScrollBar->SetThumbPos( mpTextWindow->GetTextView()->GetStartDocPos().Y() );
}
void ImpVclMEdit::ImpSetHScrollBarThumbPos()
@@ -372,18 +343,18 @@ void ImpVclMEdit::Resize()
long nSBWidth = pVclMultiLineEdit->GetSettings().GetStyleSettings().GetScrollBarSize();
nSBWidth = pVclMultiLineEdit->CalcZoom( nSBWidth );
- if ( mpHScrollBar )
+ if (mpHScrollBar->IsVisible())
aSz.AdjustHeight( -(nSBWidth+1) );
- if ( mpVScrollBar )
+ if (mpVScrollBar->IsVisible())
aSz.AdjustWidth( -(nSBWidth+1) );
- if ( !mpHScrollBar )
+ if (!mpHScrollBar->IsVisible())
mpTextWindow->GetTextEngine()->SetMaxTextWidth( aSz.Width() );
else
mpHScrollBar->setPosSizePixel( 0, aEditSize.Height()-nSBWidth, aSz.Width(), nSBWidth );
Point aTextWindowPos;
- if ( mpVScrollBar )
+ if (mpVScrollBar->IsVisible())
{
if( AllSettings::GetLayoutRTL() )
{
@@ -394,7 +365,7 @@ void ImpVclMEdit::Resize()
mpVScrollBar->setPosSizePixel( aEditSize.Width()-nSBWidth, 0, nSBWidth, aSz.Height() );
}
- if ( mpScrollBox )
+ if (mpScrollBox->IsVisible())
mpScrollBox->setPosSizePixel( aSz.Width(), aSz.Height(), nSBWidth, nSBWidth );
Size aTextWindowSize( aSz );
@@ -478,9 +449,9 @@ void ImpVclMEdit::Notify( SfxBroadcaster&, const SfxHint& rHint )
switch (pTextHint->GetId())
{
case SfxHintId::TextViewScrolled:
- if ( mpHScrollBar )
+ if (mpHScrollBar->IsVisible())
ImpSetHScrollBarThumbPos();
- if ( mpVScrollBar )
+ if (mpVScrollBar->IsVisible())
mpVScrollBar->SetThumbPos( mpTextWindow->GetTextView()->GetStartDocPos().Y() );
break;
@@ -496,7 +467,7 @@ void ImpVclMEdit::Notify( SfxBroadcaster&, const SfxHint& rHint )
break;
case SfxHintId::TextFormatted:
- if ( mpHScrollBar )
+ if (mpHScrollBar->IsVisible())
{
const long nWidth = mpTextWindow->GetTextEngine()->CalcTextWidth();
if ( nWidth != mnTextWidth )
@@ -598,9 +569,9 @@ Size ImpVclMEdit::CalcMinimumSize() const
Size aSz( mpTextWindow->GetTextEngine()->CalcTextWidth(),
mpTextWindow->GetTextEngine()->GetTextHeight() );
- if ( mpHScrollBar )
+ if (mpHScrollBar->IsVisible())
aSz.AdjustHeight(mpHScrollBar->GetSizePixel().Height() );
- if ( mpVScrollBar )
+ if (mpVScrollBar->IsVisible())
aSz.AdjustWidth(mpVScrollBar->GetSizePixel().Width() );
return aSz;
@@ -625,9 +596,9 @@ Size ImpVclMEdit::CalcBlockSize( sal_uInt16 nColumns, sal_uInt16 nLines ) const
else
aSz.setWidth( mpTextWindow->GetTextEngine()->CalcTextWidth() );
- if ( mpHScrollBar )
+ if (mpHScrollBar->IsVisible())
aSz.AdjustHeight(mpHScrollBar->GetSizePixel().Height() );
- if ( mpVScrollBar )
+ if (mpVScrollBar->IsVisible())
aSz.AdjustWidth(mpVScrollBar->GetSizePixel().Width() );
return aSz;
@@ -645,9 +616,9 @@ void ImpVclMEdit::GetMaxVisColumnsAndLines( sal_uInt16& rnCols, sal_uInt16& rnLi
void ImpVclMEdit::Enable( bool bEnable )
{
mpTextWindow->Enable( bEnable );
- if ( mpHScrollBar )
+ if (mpHScrollBar->IsVisible())
mpHScrollBar->Enable( bEnable );
- if ( mpVScrollBar )
+ if (mpVScrollBar->IsVisible())
mpVScrollBar->Enable( bEnable );
}
@@ -658,7 +629,9 @@ bool ImpVclMEdit::HandleCommand( const CommandEvent& rCEvt )
( rCEvt.GetCommand() == CommandEventId::StartAutoScroll ) ||
( rCEvt.GetCommand() == CommandEventId::AutoScroll ) )
{
- (void)mpTextWindow->HandleScrollCommand( rCEvt, mpHScrollBar, mpVScrollBar );
+ ScrollBar* pHScrollBar = mpHScrollBar->IsVisible() ? mpHScrollBar.get() : nullptr;
+ ScrollBar* pVScrollBar = mpVScrollBar->IsVisible() ? mpVScrollBar.get() : nullptr;
+ (void)mpTextWindow->HandleScrollCommand(rCEvt, pHScrollBar, pVScrollBar);
bDone = true;
}
return bDone;
@@ -1437,38 +1410,38 @@ bool VclMultiLineEdit::PreNotify( NotifyEvent& rNEvt )
{
case KEY_UP:
{
- if ( pImpVclMEdit->GetVScrollBar() )
- pImpVclMEdit->GetVScrollBar()->DoScrollAction( ScrollType::LineUp );
+ if ( pImpVclMEdit->GetVScrollBar().IsVisible() )
+ pImpVclMEdit->GetVScrollBar().DoScrollAction( ScrollType::LineUp );
}
break;
case KEY_DOWN:
{
- if ( pImpVclMEdit->GetVScrollBar() )
- pImpVclMEdit->GetVScrollBar()->DoScrollAction( ScrollType::LineDown );
+ if ( pImpVclMEdit->GetVScrollBar().IsVisible() )
+ pImpVclMEdit->GetVScrollBar().DoScrollAction( ScrollType::LineDown );
}
break;
case KEY_PAGEUP :
{
- if ( pImpVclMEdit->GetVScrollBar() )
- pImpVclMEdit->GetVScrollBar()->DoScrollAction( ScrollType::PageUp );
+ if ( pImpVclMEdit->GetVScrollBar().IsVisible() )
+ pImpVclMEdit->GetVScrollBar().DoScrollAction( ScrollType::PageUp );
}
break;
case KEY_PAGEDOWN:
{
- if ( pImpVclMEdit->GetVScrollBar() )
- pImpVclMEdit->GetVScrollBar()->DoScrollAction( ScrollType::PageDown );
+ if ( pImpVclMEdit->GetVScrollBar().IsVisible() )
+ pImpVclMEdit->GetVScrollBar().DoScrollAction( ScrollType::PageDown );
}
break;
case KEY_LEFT:
{
- if ( pImpVclMEdit->GetHScrollBar() )
- pImpVclMEdit->GetHScrollBar()->DoScrollAction( ScrollType::LineUp );
+ if ( pImpVclMEdit->GetHScrollBar().IsVisible() )
+ pImpVclMEdit->GetHScrollBar().DoScrollAction( ScrollType::LineUp );
}
break;
case KEY_RIGHT:
{
- if ( pImpVclMEdit->GetHScrollBar() )
- pImpVclMEdit->GetHScrollBar()->DoScrollAction( ScrollType::LineDown );
+ if ( pImpVclMEdit->GetHScrollBar().IsVisible() )
+ pImpVclMEdit->GetHScrollBar().DoScrollAction( ScrollType::LineDown );
}
break;
case KEY_HOME:
@@ -1509,7 +1482,7 @@ TextView* VclMultiLineEdit::GetTextView() const
return pImpVclMEdit->GetTextWindow()->GetTextView();
}
-ScrollBar* VclMultiLineEdit::GetVScrollBar() const
+ScrollBar& VclMultiLineEdit::GetVScrollBar() const
{
return pImpVclMEdit->GetVScrollBar();
}
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 2bfbd67f6ed1..d33c59ba316e 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -1219,6 +1219,34 @@ namespace
}
}
+static MouseEventModifiers ImplGetMouseButtonMode(sal_uInt16 nButton, sal_uInt16 nCode)
+{
+ MouseEventModifiers nMode = MouseEventModifiers::NONE;
+ if ( nButton == MOUSE_LEFT )
+ nMode |= MouseEventModifiers::SIMPLECLICK;
+ if ( (nButton == MOUSE_LEFT) && !(nCode & (MOUSE_MIDDLE | MOUSE_RIGHT)) )
+ nMode |= MouseEventModifiers::SELECT;
+ if ( (nButton == MOUSE_LEFT) && (nCode & KEY_MOD1) &&
+ !(nCode & (MOUSE_MIDDLE | MOUSE_RIGHT | KEY_SHIFT)) )
+ nMode |= MouseEventModifiers::MULTISELECT;
+ if ( (nButton == MOUSE_LEFT) && (nCode & KEY_SHIFT) &&
+ !(nCode & (MOUSE_MIDDLE | MOUSE_RIGHT | KEY_MOD1)) )
+ nMode |= MouseEventModifiers::RANGESELECT;
+ return nMode;
+}
+
+static MouseEventModifiers ImplGetMouseMoveMode(sal_uInt16 nCode)
+{
+ MouseEventModifiers nMode = MouseEventModifiers::NONE;
+ if ( !nCode )
+ nMode |= MouseEventModifiers::SIMPLEMOVE;
+ if ( (nCode & MOUSE_LEFT) && !(nCode & KEY_MOD1) )
+ nMode |= MouseEventModifiers::DRAGMOVE;
+ if ( (nCode & MOUSE_LEFT) && (nCode & KEY_MOD1) )
+ nMode |= MouseEventModifiers::DRAGCOPY;
+ return nMode;
+}
+
class GtkInstanceWidget : public virtual weld::Widget
{
protected:
@@ -1252,11 +1280,15 @@ protected:
private:
bool m_bTakeOwnership;
bool m_bFrozen;
+ sal_uInt16 m_nLastMouseButton;
gulong m_nFocusInSignalId;
gulong m_nFocusOutSignalId;
gulong m_nKeyPressSignalId;
gulong m_nKeyReleaseSignalId;
gulong m_nSizeAllocateSignalId;
+ gulong m_nButtonPressSignalId;
+ gulong m_nMotionSignalId;
+ gulong m_nButtonReleaseSignalId;
static void signalSizeAllocate(GtkWidget*, GdkRectangle* allocation, gpointer widget)
{
@@ -1278,25 +1310,164 @@ private:
return pThis->signal_key(pEvent);
}
+ virtual bool signal_popup_menu(const Point&)
+ {
+ return false;
+ }
+
+ static gboolean signalButton(GtkWidget*, GdkEventButton* pEvent, gpointer widget)
+ {
+ GtkInstanceWidget* pThis = static_cast<GtkInstanceWidget*>(widget);
+ SolarMutexGuard aGuard;
+ return pThis->signal_button(pEvent);
+ }
+
+ bool signal_button(GdkEventButton* pEvent)
+ {
+ int nClicks = 1;
+
+ SalEvent nEventType = SalEvent::NONE;
+ switch (pEvent->type)
+ {
+ case GDK_BUTTON_PRESS:
+ if (GdkEvent* pPeekEvent = gdk_event_peek())
+ {
+ bool bSkip = pPeekEvent->type == GDK_2BUTTON_PRESS ||
+ pPeekEvent->type == GDK_3BUTTON_PRESS;
+ gdk_event_free(pPeekEvent);
+ if (bSkip)
+ {
+ return true;
+ }
+ }
+ nEventType = SalEvent::MouseButtonDown;
+ break;
+ case GDK_2BUTTON_PRESS:
+ nClicks = 2;
+ nEventType = SalEvent::MouseButtonDown;
+ break;
+ case GDK_3BUTTON_PRESS:
+ nClicks = 3;
+ nEventType = SalEvent::MouseButtonDown;
+ break;
+ case GDK_BUTTON_RELEASE:
+ nEventType = SalEvent::MouseButtonUp;
+ break;
+ default:
+ return false;
+ }
+
+ switch (pEvent->button)
+ {
+ case 1:
+ m_nLastMouseButton = MOUSE_LEFT;
+ break;
+ case 2:
+ m_nLastMouseButton = MOUSE_MIDDLE;
+ break;
+ case 3:
+ m_nLastMouseButton = MOUSE_RIGHT;
+ break;
+ default:
+ return false;
+ }
+
+ Point aPos(pEvent->x, pEvent->y);
+ if (AllSettings::GetLayoutRTL())
+ aPos.setX(gtk_widget_get_allocated_width(m_pWidget) - 1 - aPos.X());
+
+ if (gdk_event_triggers_context_menu(reinterpret_cast<GdkEvent*>(pEvent)) && pEvent->type == GDK_BUTTON_PRESS)
+ {
+ //if handled for context menu, stop processing
+ if (signal_popup_menu(aPos))
+ return true;
+ }
+
+ sal_uInt32 nModCode = GtkSalFrame::GetMouseModCode(pEvent->state);
+ sal_uInt16 nCode = m_nLastMouseButton | (nModCode & (KEY_SHIFT | KEY_MOD1 | KEY_MOD2));
+ MouseEvent aMEvt(aPos, nClicks, ImplGetMouseButtonMode(m_nLastMouseButton, nModCode), nCode, nCode);
+
+ if (nEventType == SalEvent::MouseButtonDown)
+ {
+ if (!m_aMousePressHdl.IsSet())
+ return false;
+ return m_aMousePressHdl.Call(aMEvt);
+ }
+
+ if (!m_aMouseReleaseHdl.IsSet())
+ return false;
+ return m_aMouseReleaseHdl.Call(aMEvt);
+ }
+
+ static gboolean signalMotion(GtkWidget*, GdkEventMotion* pEvent, gpointer widget)
+ {
+ GtkInstanceWidget* pThis = static_cast<GtkInstanceWidget*>(widget);
+ SolarMutexGuard aGuard;
+ return pThis->signal_motion(pEvent);
+ }
+
+ bool signal_motion(const GdkEventMotion* pEvent)
+ {
+ if (!m_aMouseMotionHdl.IsSet())
+ return false;
+
+ Point aPos(pEvent->x, pEvent->y);
+ if (AllSettings::GetLayoutRTL())
+ aPos.setX(gtk_widget_get_allocated_width(m_pWidget) - 1 - aPos.X());
+ sal_uInt32 nModCode = GtkSalFrame::GetMouseModCode(pEvent->state);
+ sal_uInt16 nCode = m_nLastMouseButton | (nModCode & (KEY_SHIFT | KEY_MOD1 | KEY_MOD2));
+ MouseEvent aMEvt(aPos, 0, ImplGetMouseMoveMode(nModCode), nCode, nCode);
+
+ m_aMouseMotionHdl.Call(aMEvt);
+ return true;
+ }
+
public:
GtkInstanceWidget(GtkWidget* pWidget, GtkInstanceBuilder* pBuilder, bool bTakeOwnership)
: m_pWidget(pWidget)
, m_pBuilder(pBuilder)
, m_bTakeOwnership(bTakeOwnership)
, m_bFrozen(false)
+ , m_nLastMouseButton(0)
, m_nFocusInSignalId(0)
, m_nFocusOutSignalId(0)
+ , m_nKeyPressSignalId(0)
+ , m_nKeyReleaseSignalId(0)
, m_nSizeAllocateSignalId(0)
+ , m_nButtonPressSignalId(0)
+ , m_nMotionSignalId(0)
+ , m_nButtonReleaseSignalId(0)
{
- GdkEventMask eEventMask(static_cast<GdkEventMask>(gtk_widget_get_events(pWidget)));
- if (eEventMask & GDK_BUTTON_PRESS_MASK)
- m_nKeyPressSignalId = g_signal_connect(pWidget, "key-press-event", G_CALLBACK(signalKey), this);
- else
- m_nKeyPressSignalId = 0;
- if (eEventMask & GDK_BUTTON_RELEASE_MASK)
- m_nKeyReleaseSignalId = g_signal_connect(pWidget, "key-release-event", G_CALLBACK(signalKey), this);
- else
- m_nKeyReleaseSignalId = 0;
+ }
+
+ virtual void connect_key_press(const Link<const KeyEvent&, bool>& rLink) override
+ {
+ m_nKeyPressSignalId = g_signal_connect(m_pWidget, "key-press-event", G_CALLBACK(signalKey), this);
+ weld::Widget::connect_key_press(rLink);
+ }
+
+ virtual void connect_key_release(const Link<const KeyEvent&, bool>& rLink) override
+ {
+ m_nKeyReleaseSignalId = g_signal_connect(m_pWidget, "key-release-event", G_CALLBACK(signalKey), this);
+ weld::Widget::connect_key_release(rLink);
+ }
+
+ virtual void connect_mouse_press(const Link<const MouseEvent&, bool>& rLink) override
+ {
+ m_nButtonPressSignalId = g_signal_connect(m_pWidget, "button-press-event", G_CALLBACK(signalButton), this);
+ weld::Widget::connect_mouse_press(rLink);
+ }
+
+ virtual void connect_mouse_move(const Link<const MouseEvent&, bool>& rLink) override
+ {
+ m_nMotionSignalId = g_signal_connect(m_pWidget, "motion-notify-event", G_CALLBACK(signalMotion), this);
+ weld::Widget::connect_mouse_move(rLink);
+ }
+
+ virtual void connect_mouse_release(const Link<const MouseEvent&, bool>& rLink) override
+ {
+ m_nButtonReleaseSignalId = g_signal_connect(m_pWidget, "button-release-event", G_CALLBACK(signalButton), this);
+ weld::Widget::connect_mouse_release(rLink);
}
virtual void set_sensitive(bool sensitive) override
@@ -1650,6 +1821,12 @@ public:
g_signal_handler_disconnect(m_pWidget, m_nKeyPressSignalId);
if (m_nKeyReleaseSignalId)
g_signal_handler_disconnect(m_pWidget, m_nKeyReleaseSignalId);
+ if (m_nButtonPressSignalId)
+ g_signal_handler_disconnect(m_pWidget, m_nButtonPressSignalId);
+ if (m_nMotionSignalId)
+ g_signal_handler_disconnect(m_pWidget, m_nMotionSignalId);
+ if (m_nButtonReleaseSignalId)
+ g_signal_handler_disconnect(m_pWidget, m_nButtonReleaseSignalId);
if (m_nFocusInSignalId)
g_signal_handler_disconnect(m_pWidget, m_nFocusInSignalId);
if (m_nFocusOutSignalId)
@@ -6626,7 +6803,9 @@ class GtkInstanceTextView : public GtkInstanceContainer, public virtual weld::Te
private:
GtkTextView* m_pTextView;
GtkTextBuffer* m_pTextBuffer;
+ GtkAdjustment* m_pVAdjustment;
gulong m_nChangedSignalId;
+ gulong m_nVAdjustChangedSignalId;
static void signalChanged(GtkTextView*, gpointer widget)
{
@@ -6635,12 +6814,21 @@ private:
pThis->signal_changed();
}
+ static void signalVAdjustValueChanged(GtkAdjustment*, gpointer widget)
+ {
+ GtkInstanceTextView* pThis = static_cast<GtkInstanceTextView*>(widget);
+ SolarMutexGuard aGuard;
+ pThis->signal_vadjustment_changed();
+ }
+
public:
GtkInstanceTextView(GtkTextView* pTextView, GtkInstanceBuilder* pBuilder, bool bTakeOwnership)
: GtkInstanceContainer(GTK_CONTAINER(pTextView), pBuilder, bTakeOwnership)
, m_pTextView(pTextView)
, m_pTextBuffer(gtk_text_view_get_buffer(pTextView))
+ , m_pVAdjustment(gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(pTextView)))
, m_nChangedSignalId(g_signal_connect(m_pTextBuffer, "changed", G_CALLBACK(signalChanged), this))
+ , m_nVAdjustChangedSignalId(g_signal_connect(m_pVAdjustment, "value-changed", G_CALLBACK(signalVAdjustValueChanged), this))
{
}
@@ -6715,6 +6903,7 @@ public:
virtual void disable_notify_events() override
{
+ g_signal_handler_block(m_pVAdjustment, m_nVAdjustChangedSignalId);
g_signal_handler_block(m_pTextBuffer, m_nChangedSignalId);
GtkInstanceContainer::disable_notify_events();
}
@@ -6723,42 +6912,43 @@ public:
{
GtkInstanceContainer::enable_notify_events();
g_signal_handler_unblock(m_pTextBuffer, m_nChangedSignalId);
+ g_signal_handler_unblock(m_pVAdjustment, m_nVAdjustChangedSignalId);
+ }
+
+ virtual int vadjustment_get_value() const override
+ {
+ return gtk_adjustment_get_value(m_pVAdjustment);
+ }
+
+ virtual void vadjustment_set_value(int value) override
+ {
+ disable_notify_events();
+ gtk_adjustment_set_value(m_pVAdjustment, value);
+ enable_notify_events();
+ }
+
+ virtual int vadjustment_get_upper() const override
+ {
+ return gtk_adjustment_get_upper(m_pVAdjustment);
+ }
+
+ virtual int vadjustment_get_lower() const override
+ {
+ return gtk_adjustment_get_lower(m_pVAdjustment);
+ }
+
+ virtual int vadjustment_get_page_size() const override
+ {
+ return gtk_adjustment_get_page_size(m_pVAdjustment);
}
virtual ~GtkInstanceTextView() override
{
+ g_signal_handler_disconnect(m_pVAdjustment, m_nVAdjustChangedSignalId);
g_signal_handler_disconnect(m_pTextBuffer, m_nChangedSignalId);
}
};
-static MouseEventModifiers ImplGetMouseButtonMode(sal_uInt16 nButton, sal_uInt16 nCode)
-{
- MouseEventModifiers nMode = MouseEventModifiers::NONE;
- if ( nButton == MOUSE_LEFT )
- nMode |= MouseEventModifiers::SIMPLECLICK;
- if ( (nButton == MOUSE_LEFT) && !(nCode & (MOUSE_MIDDLE | MOUSE_RIGHT)) )
- nMode |= MouseEventModifiers::SELECT;
- if ( (nButton == MOUSE_LEFT) && (nCode & KEY_MOD1) &&
- !(nCode & (MOUSE_MIDDLE | MOUSE_RIGHT | KEY_SHIFT)) )
- nMode |= MouseEventModifiers::MULTISELECT;
- if ( (nButton == MOUSE_LEFT) && (nCode & KEY_SHIFT) &&
- !(nCode & (MOUSE_MIDDLE | MOUSE_RIGHT | KEY_MOD1)) )
- nMode |= MouseEventModifiers::RANGESELECT;
- return nMode;
-}
-
-static MouseEventModifiers ImplGetMouseMoveMode(sal_uInt16 nCode)
-{
- MouseEventModifiers nMode = MouseEventModifiers::NONE;
- if ( !nCode )
- nMode |= MouseEventModifiers::SIMPLEMOVE;
- if ( (nCode & MOUSE_LEFT) && !(nCode & KEY_MOD1) )
- nMode |= MouseEventModifiers::DRAGMOVE;
- if ( (nCode & MOUSE_LEFT) && (nCode & KEY_MOD1) )
- nMode |= MouseEventModifiers::DRAGCOPY;
- return nMode;
-}
-
namespace
{
AtkObject* (*default_drawing_area_get_accessible)(GtkWidget *widget);
@@ -6772,11 +6962,7 @@ private:
AtkObject *m_pAccessible;
ScopedVclPtrInstance<VirtualDevice> m_xDevice;
cairo_surface_t* m_pSurface;
- sal_uInt16 m_nLastMouseButton;
gulong m_nDrawSignalId;
- gulong m_nButtonPressSignalId;
- gulong m_nMotionSignalId;
- gulong m_nButtonReleaseSignalId;
gulong m_nStyleUpdatedSignalId;
gulong m_nQueryTooltip;
gulong m_nPopupMenu;
@@ -6844,7 +7030,7 @@ private:
gtk_tooltip_set_tip_area(tooltip, &aGdkHelpArea);
return true;
}
- bool signal_popup_menu(const Point& rPos)
+ virtual bool signal_popup_menu(const Point& rPos) override
{
return m_aPopupMenuHdl.Call(rPos);
}
@@ -6857,102 +7043,6 @@ private:
gtk_widget_get_allocated_height(pWidget) / 2);
return pThis->signal_popup_menu(aPos);
}
- static gboolean signalButton(GtkWidget*, GdkEventButton* pEvent, gpointer widget)
- {
- GtkInstanceDrawingArea* pThis = static_cast<GtkInstanceDrawingArea*>(widget);
- SolarMutexGuard aGuard;
- return pThis->signal_button(pEvent);
- }
- bool signal_button(GdkEventButton* pEvent)
- {
- int nClicks = 1;
-
- SalEvent nEventType = SalEvent::NONE;
- switch (pEvent->type)
- {
- case GDK_BUTTON_PRESS:
- if (GdkEvent* pPeekEvent = gdk_event_peek())
- {
- bool bSkip = pPeekEvent->type == GDK_2BUTTON_PRESS ||
- pPeekEvent->type == GDK_3BUTTON_PRESS;
- gdk_event_free(pPeekEvent);
- if (bSkip)
- {
- return true;
- }
- }
- nEventType = SalEvent::MouseButtonDown;
- break;
- case GDK_2BUTTON_PRESS:
- nClicks = 2;
- nEventType = SalEvent::MouseButtonDown;
- break;
- case GDK_3BUTTON_PRESS:
- nClicks = 3;
- nEventType = SalEvent::MouseButtonDown;
- break;
- case GDK_BUTTON_RELEASE:
- nEventType = SalEvent::MouseButtonUp;
- break;
- default:
- return false;
- }
-
- switch (pEvent->button)
- {
- case 1:
- m_nLastMouseButton = MOUSE_LEFT;
- break;
- case 2:
- m_nLastMouseButton = MOUSE_MIDDLE;
- break;
- case 3:
- m_nLastMouseButton = MOUSE_RIGHT;
- break;
- default:
- return false;
- }
-
- Point aPos(pEvent->x, pEvent->y);
- if (AllSettings::GetLayoutRTL())
- aPos.setX(gtk_widget_get_allocated_width(m_pWidget) - 1 - aPos.X());
-
- if (gdk_event_triggers_context_menu(reinterpret_cast<GdkEvent*>(pEvent)) && pEvent->type == GDK_BUTTON_PRESS)
- {
- //if handled for context menu, stop processing
- if (signal_popup_menu(aPos))
- return true;
- }
-
- sal_uInt32 nModCode = GtkSalFrame::GetMouseModCode(pEvent->state);
- sal_uInt16 nCode = m_nLastMouseButton | (nModCode & (KEY_SHIFT | KEY_MOD1 | KEY_MOD2));
- MouseEvent aMEvt(aPos, nClicks, ImplGetMouseButtonMode(m_nLastMouseButton, nModCode), nCode, nCode);
-
- if (nEventType == SalEvent::MouseButtonDown)
- m_aMousePressHdl.Call(aMEvt);
- else
- m_aMouseReleaseHdl.Call(aMEvt);
-
- return true;
- }
- static gboolean signalMotion(GtkWidget*, GdkEventMotion* pEvent, gpointer widget)
- {
- GtkInstanceDrawingArea* pThis = static_cast<GtkInstanceDrawingArea*>(widget);
- SolarMutexGuard aGuard;
- return pThis->signal_motion(pEvent);
- }
- bool signal_motion(const GdkEventMotion* pEvent)
- {
- Point aPos(pEvent->x, pEvent->y);
- if (AllSettings::GetLayoutRTL())
- aPos.setX(gtk_widget_get_allocated_width(m_pWidget) - 1 - aPos.X());
- sal_uInt32 nModCode = GtkSalFrame::GetMouseModCode(pEvent->state);
- sal_uInt16 nCode = m_nLastMouseButton | (nModCode & (KEY_SHIFT | KEY_MOD1 | KEY_MOD2));
- MouseEvent aMEvt(aPos, 0, ImplGetMouseMoveMode(nModCode), nCode, nCode);
-
- m_aMouseMotionHdl.Call(aMEvt);
- return true;
- }
public:
GtkInstanceDrawingArea(GtkDrawingArea* pDrawingArea, GtkInstanceBuilder* pBuilder, const a11yref& rA11y, bool bTakeOwnership)
: GtkInstanceWidget(GTK_WIDGET(pDrawingArea), pBuilder, bTakeOwnership)
@@ -6961,11 +7051,7 @@ public:
, m_pAccessible(nullptr)
, m_xDevice(nullptr, Size(1, 1), DeviceFormat::DEFAULT)
, m_pSurface(nullptr)
- , m_nLastMouseButton(0)
, m_nDrawSignalId(g_signal_connect(m_pDrawingArea, "draw", G_CALLBACK(signalDraw), this))
- , m_nButtonPressSignalId(g_signal_connect(m_pDrawingArea, "button-press-event", G_CALLBACK(signalButton), this))
- , m_nMotionSignalId(g_signal_connect(m_pDrawingArea, "motion-notify-event", G_CALLBACK(signalMotion), this))
- , m_nButtonReleaseSignalId(g_signal_connect(m_pDrawingArea, "button-release-event", G_CALLBACK(signalButton), this))
, m_nStyleUpdatedSignalId(g_signal_connect(m_pDrawingArea,"style-updated", G_CALLBACK(signalStyleUpdated), this))
, m_nQueryTooltip(g_signal_connect(m_pDrawingArea, "query-tooltip", G_CALLBACK(signalQueryTooltip), this))
, m_nPopupMenu(g_signal_connect(m_pDrawingArea, "popup-menu", G_CALLBACK(signalPopupMenu), this))
@@ -7060,9 +7146,6 @@ public:
g_signal_handler_disconnect(m_pDrawingArea, m_nPopupMenu);
g_signal_handler_disconnect(m_pDrawingArea, m_nQueryTooltip);
g_signal_handler_disconnect(m_pDrawingArea, m_nStyleUpdatedSignalId);
- g_signal_handler_disconnect(m_pDrawingArea, m_nButtonPressSignalId);
- g_signal_handler_disconnect(m_pDrawingArea, m_nMotionSignalId);
- g_signal_handler_disconnect(m_pDrawingArea, m_nButtonReleaseSignalId);
g_signal_handler_disconnect(m_pDrawingArea, m_nDrawSignalId);
}