cui/source/inc/autocdlg.hxx | 9 +-- cui/source/tabpages/autocdlg.cxx | 94 +++++++++++++++++++------------------ cui/uiconfig/ui/acoroptionspage.ui | 58 ++++++++++++++++++++-- include/vcl/floatwin.hxx | 10 --- vcl/source/window/floatwin.cxx | 8 +-- vcl/source/window/winproc.cxx | 14 ++--- 6 files changed, 120 insertions(+), 73 deletions(-)
New commits: commit a89e8c54e8aa95e7f59f204cc3396e2acbdd860a Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Mon Dec 3 21:13:14 2018 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Tue Dec 4 09:54:24 2018 +0100 remove enum HitTest since we only care about one of the values, we can just use a bool Change-Id: Id4fd0c60cd7421861b2e605604b7d3ecbf8bf915 Reviewed-on: https://gerrit.libreoffice.org/64485 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/include/vcl/floatwin.hxx b/include/vcl/floatwin.hxx index aa6c6c0b3130..10b45c8e5fb4 100644 --- a/include/vcl/floatwin.hxx +++ b/include/vcl/floatwin.hxx @@ -72,14 +72,6 @@ enum class FloatWinTitleType NONE = 4, }; -enum HitTest -{ - HITTEST_OUTSIDE, - HITTEST_WINDOW, - HITTEST_RECT -}; - - class VCL_DLLPUBLIC FloatingWindow : public SystemWindow { class ImplData; @@ -116,7 +108,7 @@ protected: virtual void ApplySettings(vcl::RenderContext& rRenderContext) override; public: - SAL_DLLPRIVATE FloatingWindow* ImplFloatHitTest( vcl::Window* pReference, const Point& rPos, HitTest& rHitTest ); + SAL_DLLPRIVATE FloatingWindow* ImplFloatHitTest( vcl::Window* pReference, const Point& rPos, bool& rbHitTestInsideRect ); SAL_DLLPRIVATE FloatingWindow* ImplFindLastLevelFloat(); SAL_DLLPRIVATE bool ImplIsFloatPopupModeWindow( const vcl::Window* pWindow ); SAL_DLLPRIVATE void ImplSetMouseDown() { mbMouseDown = true; } diff --git a/vcl/source/window/floatwin.cxx b/vcl/source/window/floatwin.cxx index 91482016b557..e632f97696b3 100644 --- a/vcl/source/window/floatwin.cxx +++ b/vcl/source/window/floatwin.cxx @@ -507,9 +507,10 @@ tools::Rectangle FloatingWindow::ImplConvertToAbsPos(vcl::Window* pReference, co return aFloatRect; } -FloatingWindow* FloatingWindow::ImplFloatHitTest( vcl::Window* pReference, const Point& rPos, HitTest& rHitTest ) +FloatingWindow* FloatingWindow::ImplFloatHitTest( vcl::Window* pReference, const Point& rPos, bool& rbHitTestInsideRect ) { FloatingWindow* pWin = this; + rbHitTestInsideRect = false; Point aAbsolute(FloatingWindow::ImplConvertToAbsPos(pReference, rPos)); @@ -524,7 +525,7 @@ FloatingWindow* FloatingWindow::ImplFloatHitTest( vcl::Window* pReference, const tools::Rectangle devRect( pBorderWin->ImplOutputToUnmirroredAbsoluteScreenPixel( tools::Rectangle( Point(), pBorderWin->GetSizePixel()) ) ) ; if ( devRect.IsInside( aAbsolute ) ) { - rHitTest = HITTEST_WINDOW; + // inside the window return pWin; } @@ -534,7 +535,7 @@ FloatingWindow* FloatingWindow::ImplFloatHitTest( vcl::Window* pReference, const // is already in absolute device coordinates if ( pWin->maFloatRect.IsInside( aAbsolute ) ) { - rHitTest = HITTEST_RECT; + rbHitTestInsideRect = true; return pWin; } @@ -542,7 +543,6 @@ FloatingWindow* FloatingWindow::ImplFloatHitTest( vcl::Window* pReference, const } while ( pWin ); - rHitTest = HITTEST_OUTSIDE; return nullptr; } diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx index add5c3b45957..a4cce43051c7 100644 --- a/vcl/source/window/winproc.cxx +++ b/vcl/source/window/winproc.cxx @@ -75,8 +75,8 @@ static bool ImplHandleMouseFloatMode( vcl::Window* pChild, const Point& rMousePo * #93895# since floats are system windows, coordinates have * to be converted to float relative for the hittest */ - HitTest nHitTest = HITTEST_OUTSIDE; - FloatingWindow* pFloat = pSVData->maWinData.mpFirstFloat->ImplFloatHitTest( pChild, rMousePos, nHitTest ); + bool bHitTestInsideRect = false; + FloatingWindow* pFloat = pSVData->maWinData.mpFirstFloat->ImplFloatHitTest( pChild, rMousePos, bHitTestInsideRect ); FloatingWindow* pLastLevelFloat; FloatWinPopupFlags nPopupFlags; if ( nSVEvent == MouseNotifyEvent::MOUSEMOVE ) @@ -84,7 +84,7 @@ static bool ImplHandleMouseFloatMode( vcl::Window* pChild, const Point& rMousePo if ( bMouseLeave ) return true; - if ( !pFloat || (nHitTest == HITTEST_RECT) ) + if ( !pFloat || bHitTestInsideRect ) { if ( pSVData->maHelpData.mpHelpWin && !pSVData->maHelpData.mbKeyboardHelp ) ImplDestroyHelpWindow( true ); @@ -104,7 +104,7 @@ static bool ImplHandleMouseFloatMode( vcl::Window* pChild, const Point& rMousePo pLastLevelFloat->EndPopupMode( FloatWinPopupEndFlags::Cancel | FloatWinPopupEndFlags::CloseAll ); return true; } - else if ( nHitTest == HITTEST_RECT ) + else if ( bHitTestInsideRect ) { pFloat->ImplSetMouseDown(); return true; @@ -114,7 +114,7 @@ static bool ImplHandleMouseFloatMode( vcl::Window* pChild, const Point& rMousePo { if ( pFloat ) { - if ( nHitTest == HITTEST_RECT ) + if ( bHitTestInsideRect ) { if ( pFloat->ImplIsMouseDown() ) pFloat->EndPopupMode( FloatWinPopupEndFlags::Cancel ); @@ -1348,8 +1348,8 @@ vcl::Window* HandleGestureEventBase::FindTarget() if (m_pSVData->maWinData.mpFirstFloat && !m_pSVData->maWinData.mpCaptureWin && !m_pSVData->maWinData.mpFirstFloat->ImplIsFloatPopupModeWindow( m_pWindow ) ) { - HitTest nHitTest = HITTEST_OUTSIDE; - pMouseWindow = m_pSVData->maWinData.mpFirstFloat->ImplFloatHitTest( m_pWindow, m_aMousePos, nHitTest ); + bool bHitTestInsideRect = false; + pMouseWindow = m_pSVData->maWinData.mpFirstFloat->ImplFloatHitTest( m_pWindow, m_aMousePos, bHitTestInsideRect ); if (!pMouseWindow) pMouseWindow = m_pSVData->maWinData.mpFirstFloat; } commit bf1932fe2133e5954441be6299e6788c17e1d1b9 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Mon Dec 3 15:31:02 2018 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Dec 4 09:54:13 2018 +0100 weld OfaAutocorrOptionsPage Change-Id: I4bf626f61c0d1eb404f99bae4d1e3bf521e4878f Reviewed-on: https://gerrit.libreoffice.org/64473 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/cui/source/inc/autocdlg.hxx b/cui/source/inc/autocdlg.hxx index 21ef480794ef..cc8b5383b7af 100644 --- a/cui/source/inc/autocdlg.hxx +++ b/cui/source/inc/autocdlg.hxx @@ -95,8 +95,6 @@ class OfaAutocorrOptionsPage : public SfxTabPage using TabPage::ActivatePage; private: - VclPtr<SvxCheckListBox> m_pCheckLB; - OUString m_sInput; OUString m_sDoubleCaps; OUString m_sStartCap; @@ -106,10 +104,13 @@ private: OUString m_sDash; OUString m_sAccidentalCaps; + std::unique_ptr<weld::TreeView> m_xCheckLB; + + void InsertEntry(const OUString& rTxt); + public: - OfaAutocorrOptionsPage(vcl::Window* pParent, const SfxItemSet& rSet); + OfaAutocorrOptionsPage(TabPageParent pParent, const SfxItemSet& rSet); virtual ~OfaAutocorrOptionsPage() override; - virtual void dispose() override; static VclPtr<SfxTabPage> Create( TabPageParent pParent, const SfxItemSet* rAttrSet); diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx index 1af32103593a..fa8825bd3f5a 100644 --- a/cui/source/tabpages/autocdlg.cxx +++ b/cui/source/tabpages/autocdlg.cxx @@ -188,8 +188,8 @@ IMPL_LINK(OfaAutoCorrDlg, SelectLanguageHdl, ListBox&, rBox, void) } } -OfaAutocorrOptionsPage::OfaAutocorrOptionsPage(vcl::Window* pParent, const SfxItemSet& rSet) - : SfxTabPage(pParent, "AutocorrectOptionsPage", "cui/ui/acoroptionspage.ui", &rSet) +OfaAutocorrOptionsPage::OfaAutocorrOptionsPage(TabPageParent pParent, const SfxItemSet& rSet) + : SfxTabPage(pParent, "cui/ui/acoroptionspage.ui", "AutocorrectOptionsPage", &rSet) , m_sInput(CuiResId(RID_SVXSTR_USE_REPLACE)) , m_sDoubleCaps(CuiResId(RID_SVXSTR_CPTL_STT_WORD)) , m_sStartCap(CuiResId(RID_SVXSTR_CPTL_STT_SENT)) @@ -198,8 +198,11 @@ OfaAutocorrOptionsPage::OfaAutocorrOptionsPage(vcl::Window* pParent, const SfxIt , m_sNoDblSpaces(CuiResId(RID_SVXSTR_NO_DBL_SPACES)) , m_sDash(CuiResId(RID_SVXSTR_DASH)) , m_sAccidentalCaps(CuiResId(RID_SVXSTR_CORRECT_ACCIDENTAL_CAPS_LOCK)) + , m_xCheckLB(m_xBuilder->weld_tree_view("checklist")) { - get(m_pCheckLB, "checklist"); + std::vector<int> aWidths; + aWidths.push_back(m_xCheckLB->get_approximate_digit_width() * 3 + 6); + m_xCheckLB->set_column_fixed_widths(aWidths); } OfaAutocorrOptionsPage::~OfaAutocorrOptionsPage() @@ -207,16 +210,10 @@ OfaAutocorrOptionsPage::~OfaAutocorrOptionsPage() disposeOnce(); } -void OfaAutocorrOptionsPage::dispose() -{ - m_pCheckLB.clear(); - SfxTabPage::dispose(); -} - -VclPtr<SfxTabPage> OfaAutocorrOptionsPage::Create( TabPageParent pParent, - const SfxItemSet* rSet) +VclPtr<SfxTabPage> OfaAutocorrOptionsPage::Create(TabPageParent pParent, + const SfxItemSet* rSet) { - return VclPtr<OfaAutocorrOptionsPage>::Create(pParent.pParent, *rSet); + return VclPtr<OfaAutocorrOptionsPage>::Create(pParent, *rSet); } bool OfaAutocorrOptionsPage::FillItemSet( SfxItemSet* ) @@ -224,15 +221,15 @@ bool OfaAutocorrOptionsPage::FillItemSet( SfxItemSet* ) SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect(); ACFlags nFlags = pAutoCorrect->GetFlags(); - sal_uLong nPos = 0; - pAutoCorrect->SetAutoCorrFlag(ACFlags::Autocorrect, m_pCheckLB->IsChecked(nPos++)); - pAutoCorrect->SetAutoCorrFlag(ACFlags::CapitalStartWord, m_pCheckLB->IsChecked(nPos++)); - pAutoCorrect->SetAutoCorrFlag(ACFlags::CapitalStartSentence, m_pCheckLB->IsChecked(nPos++)); - pAutoCorrect->SetAutoCorrFlag(ACFlags::ChgWeightUnderl, m_pCheckLB->IsChecked(nPos++)); - pAutoCorrect->SetAutoCorrFlag(ACFlags::SetINetAttr, m_pCheckLB->IsChecked(nPos++)); - pAutoCorrect->SetAutoCorrFlag(ACFlags::ChgToEnEmDash, m_pCheckLB->IsChecked(nPos++)); - pAutoCorrect->SetAutoCorrFlag(ACFlags::IgnoreDoubleSpace, m_pCheckLB->IsChecked(nPos++)); - pAutoCorrect->SetAutoCorrFlag(ACFlags::CorrectCapsLock, m_pCheckLB->IsChecked(nPos++)); + int nPos = 0; + pAutoCorrect->SetAutoCorrFlag(ACFlags::Autocorrect, m_xCheckLB->get_toggle(nPos++)); + pAutoCorrect->SetAutoCorrFlag(ACFlags::CapitalStartWord, m_xCheckLB->get_toggle(nPos++)); + pAutoCorrect->SetAutoCorrFlag(ACFlags::CapitalStartSentence, m_xCheckLB->get_toggle(nPos++)); + pAutoCorrect->SetAutoCorrFlag(ACFlags::ChgWeightUnderl, m_xCheckLB->get_toggle(nPos++)); + pAutoCorrect->SetAutoCorrFlag(ACFlags::SetINetAttr, m_xCheckLB->get_toggle(nPos++)); + pAutoCorrect->SetAutoCorrFlag(ACFlags::ChgToEnEmDash, m_xCheckLB->get_toggle(nPos++)); + pAutoCorrect->SetAutoCorrFlag(ACFlags::IgnoreDoubleSpace, m_xCheckLB->get_toggle(nPos++)); + pAutoCorrect->SetAutoCorrFlag(ACFlags::CorrectCapsLock, m_xCheckLB->get_toggle(nPos++)); bool bReturn = nFlags != pAutoCorrect->GetFlags(); if(bReturn ) @@ -249,34 +246,43 @@ void OfaAutocorrOptionsPage::ActivatePage( const SfxItemSet& ) static_cast<OfaAutoCorrDlg*>(GetTabDialog())->EnableLanguage(false); } +void OfaAutocorrOptionsPage::InsertEntry(const OUString& rTxt) +{ + m_xCheckLB->insert(nullptr, -1, nullptr, nullptr, nullptr, + nullptr, nullptr, false); + const int nRow = m_xCheckLB->n_children() - 1; + m_xCheckLB->set_toggle(nRow, false, 0); + m_xCheckLB->set_text(nRow, rTxt, 1); +} + void OfaAutocorrOptionsPage::Reset( const SfxItemSet* ) { SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect(); const ACFlags nFlags = pAutoCorrect->GetFlags(); - m_pCheckLB->SetUpdateMode(false); - m_pCheckLB->Clear(); - - m_pCheckLB->InsertEntry(m_sInput); - m_pCheckLB->InsertEntry(m_sDoubleCaps); - m_pCheckLB->InsertEntry(m_sStartCap); - m_pCheckLB->InsertEntry(m_sBoldUnderline); - m_pCheckLB->InsertEntry(m_sURL); - m_pCheckLB->InsertEntry(m_sDash); - m_pCheckLB->InsertEntry(m_sNoDblSpaces); - m_pCheckLB->InsertEntry(m_sAccidentalCaps); - - sal_uLong nPos = 0; - m_pCheckLB->CheckEntryPos( nPos++, bool(nFlags & ACFlags::Autocorrect) ); - m_pCheckLB->CheckEntryPos( nPos++, bool(nFlags & ACFlags::CapitalStartWord) ); - m_pCheckLB->CheckEntryPos( nPos++, bool(nFlags & ACFlags::CapitalStartSentence) ); - m_pCheckLB->CheckEntryPos( nPos++, bool(nFlags & ACFlags::ChgWeightUnderl) ); - m_pCheckLB->CheckEntryPos( nPos++, bool(nFlags & ACFlags::SetINetAttr) ); - m_pCheckLB->CheckEntryPos( nPos++, bool(nFlags & ACFlags::ChgToEnEmDash) ); - m_pCheckLB->CheckEntryPos( nPos++, bool(nFlags & ACFlags::IgnoreDoubleSpace) ); - m_pCheckLB->CheckEntryPos( nPos++, bool(nFlags & ACFlags::CorrectCapsLock) ); - - m_pCheckLB->SetUpdateMode(true); + m_xCheckLB->freeze(); + m_xCheckLB->clear(); + + InsertEntry(m_sInput); + InsertEntry(m_sDoubleCaps); + InsertEntry(m_sStartCap); + InsertEntry(m_sBoldUnderline); + InsertEntry(m_sURL); + InsertEntry(m_sDash); + InsertEntry(m_sNoDblSpaces); + InsertEntry(m_sAccidentalCaps); + + int nPos = 0; + m_xCheckLB->set_toggle( nPos++, bool(nFlags & ACFlags::Autocorrect) ); + m_xCheckLB->set_toggle( nPos++, bool(nFlags & ACFlags::CapitalStartWord) ); + m_xCheckLB->set_toggle( nPos++, bool(nFlags & ACFlags::CapitalStartSentence) ); + m_xCheckLB->set_toggle( nPos++, bool(nFlags & ACFlags::ChgWeightUnderl) ); + m_xCheckLB->set_toggle( nPos++, bool(nFlags & ACFlags::SetINetAttr) ); + m_xCheckLB->set_toggle( nPos++, bool(nFlags & ACFlags::ChgToEnEmDash) ); + m_xCheckLB->set_toggle( nPos++, bool(nFlags & ACFlags::IgnoreDoubleSpace) ); + m_xCheckLB->set_toggle( nPos++, bool(nFlags & ACFlags::CorrectCapsLock) ); + + m_xCheckLB->thaw(); } /*********************************************************************/ diff --git a/cui/uiconfig/ui/acoroptionspage.ui b/cui/uiconfig/ui/acoroptionspage.ui index c939941a02e3..f1da95498d94 100644 --- a/cui/uiconfig/ui/acoroptionspage.ui +++ b/cui/uiconfig/ui/acoroptionspage.ui @@ -1,7 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> <interface domain="cui"> <requires lib="gtk+" version="3.18"/> - <requires lib="LibreOffice" version="1.0"/> + <object class="GtkTreeStore" id="liststore2"> + <columns> + <!-- column-name check1 --> + <column type="gboolean"/> + <!-- column-name text --> + <column type="gchararray"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> <object class="GtkBox" id="AutocorrectOptionsPage"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -10,13 +19,52 @@ <property name="border_width">6</property> <property name="orientation">vertical</property> <child> - <object class="svxcorelo-SvxCheckListBox" id="checklist:border"> + <object class="GtkScrolledWindow"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can_focus">True</property> <property name="hexpand">True</property> <property name="vexpand">True</property> - <child internal-child="selection"> - <object class="GtkTreeSelection" id="Check List Box-selection1"/> + <property name="shadow_type">in</property> + <child> + <object class="GtkTreeView" id="checklist"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="model">liststore2</property> + <property name="headers_visible">False</property> + <property name="search_column">0</property> + <property name="show_expanders">False</property> + <child internal-child="selection"> + <object class="GtkTreeSelection" id="Macro Library List-selection2"/> + </child> + <child> + <object class="GtkTreeViewColumn" id="treeviewcolumn4"> + <property name="resizable">True</property> + <property name="spacing">6</property> + <property name="alignment">0.5</property> + <child> + <object class="GtkCellRendererToggle" id="cellrenderer5"/> + <attributes> + <attribute name="active">0</attribute> + </attributes> + </child> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="treeviewcolumn5"> + <property name="resizable">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkCellRendererText" id="cellrenderer4"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> + </object> + </child> + </object> </child> </object> <packing> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits