diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-03-26 15:39:32 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-03-29 22:24:18 +0100 |
commit | 0198259e4301a45c339fcdda688892e1e6a3ad9f (patch) | |
tree | 826681c831aed8a0288b0e56a9e41b1e5fc39a1f /svx | |
parent | 37f5c96da886f82b819e375feab0a871cab28513 (diff) |
Resolves: tdf#123291 set hex input to overwrite by default
and ensure the modify arrives after the input text has been
filtered
Change-Id: I16c0bd095700e7d9858e3e74884b5a1ad3eb7e4c
Reviewed-on: https://gerrit.libreoffice.org/69764
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit f1e52cbdd4a9753a9b9d562ef280a00e52db1dae)
support overwrite-mode
Change-Id: I6133aedbebd3ca358e2b916469873c38fc7453cb
Reviewed-on: https://gerrit.libreoffice.org/69761
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 2f70e6111b61d52bbdfa753257370cb82bfd30eb)
Related: tdf#123291 treat overwrite like a selection of 1
for input into ImplTruncateToMaxLen like we do for the
following erase
Change-Id: I8cd02ff1ba76f61ddc614922068cbe2bc9bc4cb8
Reviewed-on: https://gerrit.libreoffice.org/69763
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 8622dc09954a1a26661e3524c99e7ed0f456cf6e)
Reviewed-on: https://gerrit.libreoffice.org/69800
Tested-by: Xisco Faulí <xiscofauli@libreoffice.org>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/dialog/hexcolorcontrol.cxx | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/svx/source/dialog/hexcolorcontrol.cxx b/svx/source/dialog/hexcolorcontrol.cxx index e9ddfb553a43..70e32e540827 100644 --- a/svx/source/dialog/hexcolorcontrol.cxx +++ b/svx/source/dialog/hexcolorcontrol.cxx @@ -19,22 +19,49 @@ #include <svx/hexcolorcontrol.hxx> #include <rtl/character.hxx> +#include <vcl/svapp.hxx> namespace weld { HexColorControl::HexColorControl(std::unique_ptr<weld::Entry> pEntry) : m_xEntry(std::move(pEntry)) + , m_nAsyncModifyEvent(nullptr) { m_xEntry->set_max_length(6); m_xEntry->set_width_chars(6); m_xEntry->connect_insert_text(LINK(this, HexColorControl, ImplProcessInputHdl)); + m_xEntry->connect_changed(LINK(this, HexColorControl, ImplProcessModifyHdl)); +} + +HexColorControl::~HexColorControl() +{ + if (m_nAsyncModifyEvent) + Application::RemoveUserEvent(m_nAsyncModifyEvent); +} + +IMPL_LINK_NOARG(HexColorControl, OnAsyncModifyHdl, void*, void) +{ + m_nAsyncModifyEvent = nullptr; + m_aModifyHdl.Call(*m_xEntry); +} + +// tdf#123291 resend it async so it arrives after ImplProcessInputHdl has been +// processed +IMPL_LINK_NOARG(HexColorControl, ImplProcessModifyHdl, weld::Entry&, void) +{ + if (m_nAsyncModifyEvent) + Application::RemoveUserEvent(m_nAsyncModifyEvent); + m_nAsyncModifyEvent = Application::PostUserEvent(LINK(this, HexColorControl, OnAsyncModifyHdl)); } void HexColorControl::SetColor(Color nColor) { OUStringBuffer aBuffer; sax::Converter::convertColor(aBuffer, nColor); - m_xEntry->set_text(aBuffer.makeStringAndClear().copy(1)); + OUString sColor = aBuffer.makeStringAndClear().copy(1); + if (sColor == m_xEntry->get_text()) + return; + m_xEntry->set_text(sColor); } Color HexColorControl::GetColor() |