summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-03-26 15:39:32 +0000
committerCaolán McNamara <caolanm@redhat.com>2019-03-29 22:24:18 +0100
commit0198259e4301a45c339fcdda688892e1e6a3ad9f (patch)
tree826681c831aed8a0288b0e56a9e41b1e5fc39a1f /svx
parent37f5c96da886f82b819e375feab0a871cab28513 (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.cxx29
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()