include/vcl/button.hxx | 2 +- vcl/source/control/button.cxx | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-)
New commits: commit d35171456bc230efdaa9426da1398b2db7fa0df8 Author: Justin Luth <justin.l...@collabora.com> AuthorDate: Sat Jun 15 22:15:32 2019 +0300 Commit: Justin Luth <justin_l...@sil.org> CommitDate: Thu Jun 27 06:09:43 2019 +0200 tdf#125609c10 vcl/button: enforce only one radio selected on init This patch does not solve the main LO 6.2 problem in bug 125609, but fixes the related problem from comments 10/11. This patch fixes two different scenarios: 1.) Sometimes buttons could fall through the other safety nets and have multiple radio buttons selected in a single group at display time. Since ImplInitStyle can be called multiple times for the same button, ensure that once everything is imported (IsRadioCheckEnabled) that any calls to this double-check that only one button is enabled. First come, first served if by programmer error multiple are marked as IsChecked in the same group. This problem existed pre-LO 6.2, so it had nothing to do with tabstops specifically. 2.) This patch specifically fixes the 6.2 regression with the Grammalecte extension Graphic Options dialog box. In this case Dialog::GrabFocusToFirstControl ended up being treated as a "click" on a tabstopped, unchecked radio, because setting the state never called the SetState/Checked function, but only the Init, and so the uncheckAllOther function never removed any tabstops. Change-Id: I98272d6c81cf582a15c2e6bf04e6ed60da1d9c71 Reviewed-on: https://gerrit.libreoffice.org/74108 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_l...@sil.org> diff --git a/include/vcl/button.hxx b/include/vcl/button.hxx index bc82b7c78bd8..2a63e47a8c9b 100644 --- a/include/vcl/button.hxx +++ b/include/vcl/button.hxx @@ -289,7 +289,7 @@ private: bool mbStateChanged; Link<RadioButton&,void> maToggleHdl; SAL_DLLPRIVATE void ImplInitRadioButtonData(); - static SAL_DLLPRIVATE WinBits ImplInitStyle( const vcl::Window* pPrevWindow, WinBits nStyle ); + SAL_DLLPRIVATE WinBits ImplInitStyle( const vcl::Window* pPrevWindow, WinBits nStyle ); SAL_DLLPRIVATE void ImplInitSettings( bool bBackground ); SAL_DLLPRIVATE void ImplDrawRadioButtonState(vcl::RenderContext& rRenderContext); SAL_DLLPRIVATE void ImplDraw( OutputDevice* pDev, DrawFlags nDrawFlags, diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index 8c7de771f1b0..2c3b20744783 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -1857,6 +1857,10 @@ WinBits RadioButton::ImplInitStyle( const vcl::Window* pPrevWindow, WinBits nSty nStyle |= WB_GROUP; if ( !(nStyle & WB_NOTABSTOP) ) nStyle |= WB_TABSTOP; + + if ( IsChecked() && IsRadioCheckEnabled() ) + ImplUncheckAllOther(); + return nStyle; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits