summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-06-19 15:02:49 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-09-03 18:25:52 +0200
commit79daf40ec696e0855d4a2894f048e44188cfbbb6 (patch)
tree96cb3ec48472c06961c1f4392ea6e1b560980555 /vcl
parentb094921089beeecb2333075e174c8b1fa6d1b812 (diff)
weld SvxAreaTabPage
which itself has 5 sub tab pages Change-Id: If71e91248b5771af4845ad6dba997ac4c7841b5d Reviewed-on: https://gerrit.libreoffice.org/56112 Tested-by: Jenkins 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.cxx6
-rw-r--r--vcl/source/app/salvtables.cxx15
-rw-r--r--vcl/source/uitest/uiobject.cxx9
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx33
4 files changed, 62 insertions, 1 deletions
diff --git a/vcl/source/app/customweld.cxx b/vcl/source/app/customweld.cxx
index 860a9d2c515e..110d2e727a0c 100644
--- a/vcl/source/app/customweld.cxx
+++ b/vcl/source/app/customweld.cxx
@@ -30,6 +30,7 @@ CustomWeld::CustomWeld(weld::Builder& rBuilder, const OString& rDrawingId,
m_xDrawingArea->connect_key_press(LINK(this, CustomWeld, DoKeyPress));
m_xDrawingArea->connect_focus_rect(LINK(this, CustomWeld, DoFocusRect));
m_xDrawingArea->connect_style_updated(LINK(this, CustomWeld, DoStyleUpdated));
+ m_xDrawingArea->connect_popup_menu(LINK(this, CustomWeld, DoPopupMenu));
m_xDrawingArea->connect_query_tooltip(LINK(this, CustomWeld, DoRequestHelp));
m_rWidgetController.SetDrawingArea(m_xDrawingArea.get());
}
@@ -79,6 +80,11 @@ IMPL_LINK_NOARG(CustomWeld, DoStyleUpdated, weld::Widget&, void)
m_rWidgetController.StyleUpdated();
}
+IMPL_LINK(CustomWeld, DoPopupMenu, const Point&, rPos, bool)
+{
+ return m_rWidgetController.ContextMenu(rPos);
+}
+
IMPL_LINK(CustomWeld, DoRequestHelp, tools::Rectangle&, rHelpArea, OUString)
{
return m_rWidgetController.RequestHelp(rHelpArea);
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 44d2aeea43f7..43eb8d510396 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -351,6 +351,11 @@ public:
return m_xWidget->GetAccessibleName();
}
+ virtual OUString get_accessible_description() const override
+ {
+ return m_xWidget->GetAccessibleDescription();
+ }
+
virtual void set_tooltip_text(const OUString& rTip) override
{
m_xWidget->SetQuickHelpText(rTip);
@@ -455,7 +460,7 @@ public:
{
SalInstanceWidget* pVclWidget = dynamic_cast<SalInstanceWidget*>(pParent);
assert(pVclWidget);
- m_xMenu->Execute(pVclWidget->getWidget(), rRect, PopupMenuFlags::ExecuteDown);
+ m_xMenu->Execute(pVclWidget->getWidget(), rRect, PopupMenuFlags::ExecuteDown | PopupMenuFlags::NoMouseUpClose);
return m_xMenu->GetCurItemIdent();
}
virtual void set_sensitive(const OString& rIdent, bool bSensitive) override
@@ -1855,6 +1860,7 @@ private:
DECL_LINK(KeyPressHdl, const KeyEvent&, bool);
DECL_LINK(KeyReleaseHdl, const KeyEvent&, bool);
DECL_LINK(StyleUpdatedHdl, VclDrawingArea&, void);
+ DECL_LINK(PopupMenuHdl, const Point&, bool);
DECL_LINK(QueryTooltipHdl, tools::Rectangle&, OUString);
public:
@@ -1873,6 +1879,7 @@ public:
m_xDrawingArea->SetKeyPressHdl(LINK(this, SalInstanceDrawingArea, KeyPressHdl));
m_xDrawingArea->SetKeyReleaseHdl(LINK(this, SalInstanceDrawingArea, KeyReleaseHdl));
m_xDrawingArea->SetStyleUpdatedHdl(LINK(this, SalInstanceDrawingArea, StyleUpdatedHdl));
+ m_xDrawingArea->SetPopupMenuHdl(LINK(this, SalInstanceDrawingArea, PopupMenuHdl));
m_xDrawingArea->SetQueryTooltipHdl(LINK(this, SalInstanceDrawingArea, QueryTooltipHdl));
}
@@ -1930,6 +1937,7 @@ public:
virtual ~SalInstanceDrawingArea() override
{
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>());
@@ -1989,6 +1997,11 @@ IMPL_LINK_NOARG(SalInstanceDrawingArea, StyleUpdatedHdl, VclDrawingArea&, void)
m_aStyleUpdatedHdl.Call(*this);
}
+IMPL_LINK(SalInstanceDrawingArea, PopupMenuHdl, const Point&, rPos, bool)
+{
+ return m_aPopupMenuHdl.Call(rPos);
+}
+
IMPL_LINK(SalInstanceDrawingArea, QueryTooltipHdl, tools::Rectangle&, rHelpArea, OUString)
{
return m_aQueryTooltipHdl.Call(rHelpArea);
diff --git a/vcl/source/uitest/uiobject.cxx b/vcl/source/uitest/uiobject.cxx
index 7962a119fdd9..7d95907a9562 100644
--- a/vcl/source/uitest/uiobject.cxx
+++ b/vcl/source/uitest/uiobject.cxx
@@ -561,7 +561,16 @@ void ButtonUIObject::execute(const OUString& rAction,
const StringMap& rParameters)
{
if (rAction == "CLICK")
+ {
+ //Click doesn't call toggle when its a pushbutton tweaked to be a toggle-button
+ if (PushButton *pPushButton = (mxButton->GetStyle() & WB_TOGGLE) ? dynamic_cast<PushButton*>(mxButton.get()) : nullptr)
+ {
+ pPushButton->Check(!pPushButton->IsChecked());
+ pPushButton->Toggle();
+ return;
+ }
mxButton->Click();
+ }
else
WindowUIObject::execute(rAction, rParameters);
}
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 6cc7f982d900..039f4a78628a 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -1390,6 +1390,13 @@ public:
return OUString(pStr, pStr ? strlen(pStr) : 0, RTL_TEXTENCODING_UTF8);
}
+ virtual OUString get_accessible_description() const override
+ {
+ AtkObject* pAtkObject = gtk_widget_get_accessible(m_pWidget);
+ const char* pStr = pAtkObject ? atk_object_get_description(pAtkObject) : nullptr;
+ return OUString(pStr, pStr ? strlen(pStr) : 0, RTL_TEXTENCODING_UTF8);
+ }
+
virtual void set_tooltip_text(const OUString& rTip) override
{
gtk_widget_set_tooltip_text(m_pWidget, OUStringToOString(rTip, RTL_TEXTENCODING_UTF8).getStr());
@@ -4137,6 +4144,7 @@ private:
gulong m_nKeyReleaseSignalId;
gulong m_nStyleUpdatedSignalId;
gulong m_nQueryTooltip;
+ gulong m_nPopupMenu;
static gboolean signalDraw(GtkWidget*, cairo_t* cr, gpointer widget)
{
@@ -4207,6 +4215,19 @@ private:
gtk_tooltip_set_tip_area(tooltip, &aGdkHelpArea);
return true;
}
+ bool signal_popup_menu(const Point& rPos)
+ {
+ return m_aPopupMenuHdl.Call(rPos);
+ }
+ static gboolean signalPopupMenu(GtkWidget* pWidget, gpointer widget)
+ {
+ GtkInstanceDrawingArea* pThis = static_cast<GtkInstanceDrawingArea*>(widget);
+ SolarMutexGuard aGuard;
+ //center it when we don't know where else to use
+ Point aPos(gtk_widget_get_allocated_width(pWidget) / 2,
+ 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);
@@ -4266,6 +4287,14 @@ private:
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);
@@ -4339,6 +4368,7 @@ public:
, m_nKeyReleaseSignalId(g_signal_connect(m_pDrawingArea,"key-release-event", G_CALLBACK(signalKey), 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))
{
gtk_widget_set_has_tooltip(m_pWidget, true);
g_object_set_data(G_OBJECT(m_pDrawingArea), "g-lo-GtkInstanceDrawingArea", this);
@@ -4424,6 +4454,7 @@ public:
g_object_steal_data(G_OBJECT(m_pDrawingArea), "g-lo-GtkInstanceDrawingArea");
if (m_pAccessible)
g_object_unref(m_pAccessible);
+ 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_nKeyPressSignalId);
@@ -5366,6 +5397,8 @@ void GtkInstanceWindow::help()
weld::Builder* GtkInstance::CreateBuilder(weld::Widget* pParent, const OUString& rUIRoot, const OUString& rUIFile)
{
GtkInstanceWidget* pParentWidget = dynamic_cast<GtkInstanceWidget*>(pParent);
+ if (pParent && !pParentWidget) //remove when complete
+ return SalInstance::CreateBuilder(pParent, rUIRoot, rUIFile);
GtkWidget* pBuilderParent = pParentWidget ? pParentWidget->getWidget() : nullptr;
return new GtkInstanceBuilder(pBuilderParent, rUIRoot, rUIFile);
}