vcl/source/app/salvtables.cxx |   14 ++++++++++++++
 vcl/unx/gtk3/gtk3gtkinst.cxx  |   24 ++++++++++++++++++++++++
 2 files changed, 38 insertions(+)

New commits:
commit 4359ee40b42a6c3febd5ff8f8286303d20d245e9
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Mon Dec 2 12:56:43 2019 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Tue Dec 3 14:44:15 2019 +0100

    tdf#129068 try dialog content area help before dialog itself
    
    we already check current notebook page before the dialog, now
    check the content area before the dialog
    
    Change-Id: Ieedb5727ddec6d24adc6e70144977b5c3063c0fd
    Reviewed-on: https://gerrit.libreoffice.org/84245
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index f45f550e5985..96195407f1a0 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -6589,6 +6589,20 @@ void SalInstanceWindow::help()
             OString sPageId = m_pBuilder->get_current_page_help_id();
             if (!sPageId.isEmpty())
                 sHelpId = sPageId;
+            else
+            {
+                // tdf#129068 likewise the help for the wrapping dialog is less
+                // helpful than the help for the content area could be
+                vcl::Window *pContentArea = nullptr;
+                if (::Dialog* pDialog = 
dynamic_cast<::Dialog*>(m_xWindow.get()))
+                    pContentArea = pDialog->get_content_area();
+                if (pContentArea)
+                {
+                    vcl::Window* pContentWidget = 
pContentArea->GetWindow(GetWindowType::LastChild);
+                    if (pContentWidget)
+                        sHelpId = pContentWidget->GetHelpId();
+                }
+            }
         }
         pHelp->Start(OStringToOUString(sHelpId, RTL_TEXTENCODING_UTF8), 
pSource);
     }
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index fc1e893d9633..3f7d424ee6d2 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -13162,6 +13162,30 @@ void GtkInstanceWindow::help()
             OString sPageId = m_pBuilder->get_current_page_help_id();
             if (!sPageId.isEmpty())
                 sHelpId = sPageId;
+            else
+            {
+                // tdf#129068 likewise the help for the wrapping dialog is less
+                // helpful than the help for the content area could be
+                GtkContainer* pContainer = nullptr;
+                if (GTK_IS_DIALOG(m_pWindow))
+                    pContainer = 
GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(m_pWindow)));
+                else if (GTK_IS_ASSISTANT(m_pWindow))
+                {
+                    GtkAssistant* pAssistant = GTK_ASSISTANT(m_pWindow);
+                    pContainer = 
GTK_CONTAINER(gtk_assistant_get_nth_page(pAssistant, 
gtk_assistant_get_current_page(pAssistant)));
+                }
+                if (pContainer)
+                {
+                    GList* pChildren = gtk_container_get_children(pContainer);
+                    GList* pChild = g_list_first(pChildren);
+                    if (pChild)
+                    {
+                        GtkWidget* pContentWidget = 
static_cast<GtkWidget*>(pChild->data);
+                        sHelpId = ::get_help_id(pContentWidget);
+                    }
+                    g_list_free(pChildren);
+                }
+            }
         }
         pHelp->Start(OStringToOUString(sHelpId, RTL_TEXTENCODING_UTF8), 
pSource);
     }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to