diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-06-19 15:02:49 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-09-03 18:25:52 +0200 |
commit | 79daf40ec696e0855d4a2894f048e44188cfbbb6 (patch) | |
tree | 96cb3ec48472c06961c1f4392ea6e1b560980555 /vcl | |
parent | b094921089beeecb2333075e174c8b1fa6d1b812 (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.cxx | 6 | ||||
-rw-r--r-- | vcl/source/app/salvtables.cxx | 15 | ||||
-rw-r--r-- | vcl/source/uitest/uiobject.cxx | 9 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 33 |
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); } |