sc: avoid dynamic_cast when possible

After b9362e87a3646a6693b81fb0d40e28ce7813a251
< tdf#145671 Don't open URL twice in cell edit mode >

Change-Id: I7b5b00aa48092666640927d268bc9d5bde0d24e8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126586
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx
index cbbfddf..8f3fb3f 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -612,22 +612,24 @@ bool ImpEditEngine::MouseButtonUp( const MouseEvent& rMEvt, EditView* pView )
            if (const SvxFieldItem* pFld = pView->GetField(aLogicClick))
            {
                bool bUrlOpened = GetEditEnginePtr()->FieldClicked( *pFld );
                auto pUrlField = dynamic_cast<const SvxURLField*>(pFld->GetField());

                // tdf#121039 When in edit mode, editeng is responsible for opening the URL on mouse click
                if (!bUrlOpened && pUrlField)
                if (!bUrlOpened)
                {
                    bool bCtrlClickHappened = rMEvt.IsMod1();
                    bool bCtrlClickSecOption
                        = SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::CtrlClickHyperlink);
                    if ((bCtrlClickHappened && bCtrlClickSecOption)
                        || (!bCtrlClickHappened && !bCtrlClickSecOption))
                    if (auto pUrlField = dynamic_cast<const SvxURLField*>(pFld->GetField()))
                    {
                        css::uno::Reference<css::system::XSystemShellExecute> exec(
                            css::system::SystemShellExecute::create(
                                comphelper::getProcessComponentContext()));
                        exec->execute(pUrlField->GetURL(), OUString(),
                                      css::system::SystemShellExecuteFlags::DEFAULTS);
                        bool bCtrlClickHappened = rMEvt.IsMod1();
                        bool bCtrlClickSecOption
                            = SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::CtrlClickHyperlink);
                        if ((bCtrlClickHappened && bCtrlClickSecOption)
                            || (!bCtrlClickHappened && !bCtrlClickSecOption))
                        {
                            css::uno::Reference<css::system::XSystemShellExecute> exec(
                                css::system::SystemShellExecute::create(
                                    comphelper::getProcessComponentContext()));
                            exec->execute(pUrlField->GetURL(), OUString(),
                                          css::system::SystemShellExecuteFlags::DEFAULTS);
                        }
                    }
                }
            }