summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cui/source/dialogs/tipofthedaydlg.cxx7
-rw-r--r--cui/source/inc/tipofthedaydlg.hxx2
-rw-r--r--fpicker/source/office/RemoteFilesDialog.cxx3
-rw-r--r--fpicker/source/office/RemoteFilesDialog.hxx2
-rw-r--r--fpicker/source/office/breadcrumb.cxx8
-rw-r--r--fpicker/source/office/breadcrumb.hxx6
-rw-r--r--include/vcl/weld.hxx8
-rw-r--r--vcl/source/app/salvtables.cxx5
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx6
9 files changed, 24 insertions, 23 deletions
diff --git a/cui/source/dialogs/tipofthedaydlg.cxx b/cui/source/dialogs/tipofthedaydlg.cxx
index 8f82f6841293..25722420ddfc 100644
--- a/cui/source/dialogs/tipofthedaydlg.cxx
+++ b/cui/source/dialogs/tipofthedaydlg.cxx
@@ -103,7 +103,7 @@ void TipOfTheDayDialog::UpdateTip()
m_pLink->set_label(CuiResId(STR_MORE_LINK));
m_pLink->set_visible(true);
- m_pLink->connect_clicked(Link<weld::LinkButton&, void>());
+ m_pLink->connect_activate_link(Link<weld::LinkButton&, bool>());
}
else
{
@@ -111,7 +111,7 @@ void TipOfTheDayDialog::UpdateTip()
m_pLink->set_label(CuiResId(STR_HELP_LINK));
m_pLink->set_visible(true);
//converts aLink into the proper offline/online hyperlink
- m_pLink->connect_clicked(LINK(this, TipOfTheDayDialog, OnLinkClick));
+ m_pLink->connect_activate_link(LINK(this, TipOfTheDayDialog, OnLinkClick));
}
// image
OUString aURL("$BRAND_BASE_DIR/$BRAND_SHARE_SUBDIR/tipoftheday/");
@@ -132,9 +132,10 @@ void TipOfTheDayDialog::UpdateTip()
}
}
-IMPL_LINK_NOARG(TipOfTheDayDialog, OnLinkClick, weld::LinkButton&, void)
+IMPL_LINK_NOARG(TipOfTheDayDialog, OnLinkClick, weld::LinkButton&, bool)
{
Application::GetHelp()->Start(aLink, static_cast<weld::Widget*>(nullptr));
+ return true;
}
IMPL_LINK_NOARG(TipOfTheDayDialog, OnNextClick, weld::Button&, void)
diff --git a/cui/source/inc/tipofthedaydlg.hxx b/cui/source/inc/tipofthedaydlg.hxx
index d013665a4055..425805af6fad 100644
--- a/cui/source/inc/tipofthedaydlg.hxx
+++ b/cui/source/inc/tipofthedaydlg.hxx
@@ -36,7 +36,7 @@ private:
OUString aLink;
void UpdateTip();
DECL_LINK(OnNextClick, weld::Button&, void);
- DECL_LINK(OnLinkClick, weld::LinkButton&, void);
+ DECL_LINK(OnLinkClick, weld::LinkButton&, bool);
public:
TipOfTheDayDialog(weld::Window* pWindow);
diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index a795338581f4..3adf45987975 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -787,9 +787,10 @@ IMPL_LINK(RemoteFilesDialog, TreeSelectHdl, weld::TreeView&, rBox, void)
m_xFileView->grab_focus();
}
-IMPL_LINK ( RemoteFilesDialog, SelectBreadcrumbHdl, Breadcrumb*, pPtr, void )
+IMPL_LINK(RemoteFilesDialog, SelectBreadcrumbHdl, Breadcrumb*, pPtr, bool)
{
OpenURL( pPtr->GetHdlURL() );
+ return true;
}
IMPL_LINK_NOARG ( RemoteFilesDialog, NewFolderHdl, weld::Button&, void )
diff --git a/fpicker/source/office/RemoteFilesDialog.hxx b/fpicker/source/office/RemoteFilesDialog.hxx
index 349a3f7d5d64..aae53a121ddf 100644
--- a/fpicker/source/office/RemoteFilesDialog.hxx
+++ b/fpicker/source/office/RemoteFilesDialog.hxx
@@ -181,7 +181,7 @@ private:
DECL_LINK( TreeSelectHdl, weld::TreeView&, void );
- DECL_LINK( SelectBreadcrumbHdl, Breadcrumb *, void );
+ DECL_LINK( SelectBreadcrumbHdl, Breadcrumb*, bool );
DECL_LINK( NewFolderHdl, weld::Button&, void );
DECL_LINK( IconViewHdl, weld::Button&, void );
diff --git a/fpicker/source/office/breadcrumb.cxx b/fpicker/source/office/breadcrumb.cxx
index 1216a543a00d..76bc0f1d17d3 100644
--- a/fpicker/source/office/breadcrumb.cxx
+++ b/fpicker/source/office/breadcrumb.cxx
@@ -40,7 +40,7 @@ void Breadcrumb::EnableFields( bool bEnable )
}
}
-void Breadcrumb::connect_clicked( const Link<Breadcrumb*,void>& rLink )
+void Breadcrumb::connect_clicked( const Link<Breadcrumb*,bool>& rLink )
{
m_aClickHdl = rLink;
}
@@ -214,7 +214,7 @@ void Breadcrumb::appendField()
m_aSegments.emplace_back(std::make_unique<BreadcrumbPath>(m_pParent));
size_t nIndex = m_aSegments.size() - 1;
m_aSegments[nIndex]->m_xLink->hide();
- m_aSegments[nIndex]->m_xLink->connect_clicked( LINK( this, Breadcrumb, ClickLinkHdl ) );
+ m_aSegments[nIndex]->m_xLink->connect_activate_link(LINK(this, Breadcrumb, ClickLinkHdl));
m_aSegments[nIndex]->m_xSeparator->set_label( ">" );
m_aSegments[nIndex]->m_xSeparator->hide();
}
@@ -242,10 +242,10 @@ bool Breadcrumb::showField( unsigned int nIndex, unsigned int nWidthMax )
return true;
}
-IMPL_LINK( Breadcrumb, ClickLinkHdl, weld::LinkButton&, rLink, void )
+IMPL_LINK(Breadcrumb, ClickLinkHdl, weld::LinkButton&, rLink, bool)
{
m_sClickedURL = m_aUris[&rLink];
- m_aClickHdl.Call( this );
+ return m_aClickHdl.Call(this);
}
BreadcrumbPath::BreadcrumbPath(weld::Container* pContainer)
diff --git a/fpicker/source/office/breadcrumb.hxx b/fpicker/source/office/breadcrumb.hxx
index 784ef32b9391..9fc66f9bcd7b 100644
--- a/fpicker/source/office/breadcrumb.hxx
+++ b/fpicker/source/office/breadcrumb.hxx
@@ -46,13 +46,13 @@ private:
SvtBreadcrumbMode m_eMode;
- Link<Breadcrumb*,void> m_aClickHdl;
+ Link<Breadcrumb*,bool> m_aClickHdl;
void appendField();
bool showField( unsigned int nIndex, unsigned int nWidthMax );
DECL_LINK(SizeAllocHdl, const Size&, void);
- DECL_LINK(ClickLinkHdl, weld::LinkButton&, void);
+ DECL_LINK(ClickLinkHdl, weld::LinkButton&, bool);
public:
Breadcrumb(weld::Container* pParent);
@@ -60,7 +60,7 @@ public:
void EnableFields( bool bEnable );
- void connect_clicked( const Link<Breadcrumb*,void>& rLink );
+ void connect_clicked( const Link<Breadcrumb*,bool>& rLink );
const OUString& GetHdlURL() const;
void SetRootName( const OUString& rURL );
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 21550aae2b8c..c9019d8dfaf5 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -1200,9 +1200,9 @@ class VCL_DLLPUBLIC RadioButton : virtual public ToggleButton
class VCL_DLLPUBLIC LinkButton : virtual public Container
{
protected:
- Link<LinkButton&, void> m_aClickHdl;
+ Link<LinkButton&, bool> m_aActivateLinkHdl;
- void signal_clicked() { m_aClickHdl.Call(*this); }
+ bool signal_activate_link() { return m_aActivateLinkHdl.Call(*this); }
public:
virtual void set_label(const OUString& rText) = 0;
@@ -1210,9 +1210,7 @@ public:
virtual void set_uri(const OUString& rUri) = 0;
virtual OUString get_uri() const = 0;
- void clicked() { signal_clicked(); }
-
- void connect_clicked(const Link<LinkButton&, void>& rLink) { m_aClickHdl = rLink; }
+ void connect_activate_link(const Link<LinkButton&, bool>& rLink) { m_aActivateLinkHdl = rLink; }
};
class VCL_DLLPUBLIC Scale : virtual public Widget
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 6b4dcd0a4032..83def998e546 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -2691,8 +2691,9 @@ public:
IMPL_LINK(SalInstanceLinkButton, ClickHdl, FixedHyperlink&, rButton, void)
{
- m_aOrigClickHdl.Call(rButton);
- signal_clicked();
+ bool bConsumed = signal_activate_link();
+ if (!bConsumed)
+ m_aOrigClickHdl.Call(rButton);
}
class SalInstanceRadioButton : public SalInstanceButton, public virtual weld::RadioButton
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index b72495c13dc4..58d6f86a0f83 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -6953,18 +6953,18 @@ private:
GtkLinkButton* m_pButton;
gulong m_nSignalId;
- static void signalClicked(GtkButton*, gpointer widget)
+ static bool signalActivateLink(GtkButton*, gpointer widget)
{
GtkInstanceLinkButton* pThis = static_cast<GtkInstanceLinkButton*>(widget);
SolarMutexGuard aGuard;
- pThis->signal_clicked();
+ return pThis->signal_activate_link();
}
public:
GtkInstanceLinkButton(GtkLinkButton* pButton, GtkInstanceBuilder* pBuilder, bool bTakeOwnership)
: GtkInstanceContainer(GTK_CONTAINER(pButton), pBuilder, bTakeOwnership)
, m_pButton(pButton)
- , m_nSignalId(g_signal_connect(pButton, "clicked", G_CALLBACK(signalClicked), this))
+ , m_nSignalId(g_signal_connect(pButton, "activate-link", G_CALLBACK(signalActivateLink), this))
{
}