summaryrefslogtreecommitdiff
path: root/cui
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2022-12-08 11:00:00 +0000
committerCaolán McNamara <caolanm@redhat.com>2022-12-08 13:57:49 +0000
commitebc7e13c0a79dbc5f21e78bcd9bb63a58c585f4a (patch)
treef45d764822a0df5c9c6c7ea6e39e28505e92e6f8 /cui
parent00e5509f07e1e53d506fc824df32e38a266952b1 (diff)
Resolves: tdf#146395 allow newlines in QR Codes
Change-Id: Ib390d97866ab013770e4f1cbdfb529296d64c140 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143811 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'cui')
-rw-r--r--cui/source/dialogs/QrCodeGenDialog.cxx10
-rw-r--r--cui/source/inc/QrCodeGenDialog.hxx2
-rw-r--r--cui/uiconfig/ui/qrcodegen.ui80
3 files changed, 56 insertions, 36 deletions
diff --git a/cui/source/dialogs/QrCodeGenDialog.cxx b/cui/source/dialogs/QrCodeGenDialog.cxx
index 3e7b48e7af86..e028d4d10e94 100644
--- a/cui/source/dialogs/QrCodeGenDialog.cxx
+++ b/cui/source/dialogs/QrCodeGenDialog.cxx
@@ -156,7 +156,7 @@ QrCodeGenDialog::QrCodeGenDialog(weld::Widget* pParent, Reference<XModel> xModel
bool bEditExisting)
: GenericDialogController(pParent, "cui/ui/qrcodegen.ui", "QrCodeGenDialog")
, m_xModel(std::move(xModel))
- , m_xEdittext(m_xBuilder->weld_entry("edit_text"))
+ , m_xEdittext(m_xBuilder->weld_text_view("edit_text"))
, m_xECC{ m_xBuilder->weld_radio_button("button_low"),
m_xBuilder->weld_radio_button("button_medium"),
m_xBuilder->weld_radio_button("button_quartile"),
@@ -167,16 +167,22 @@ QrCodeGenDialog::QrCodeGenDialog(weld::Widget* pParent, Reference<XModel> xModel
, mpParent(pParent)
#endif
{
+ m_xEdittext->set_size_request(m_xEdittext->get_approximate_digit_width() * 28,
+ m_xEdittext->get_height_rows(6));
if (!bEditExisting)
{
+ OUString sSelection;
// TODO: This only works in Writer doc. Should also work in shapes
Reference<XIndexAccess> xSelections(m_xModel->getCurrentSelection(), UNO_QUERY);
if (xSelections.is())
{
Reference<XTextRange> xSelection(xSelections->getByIndex(0), UNO_QUERY);
if (xSelection.is())
- m_xEdittext->set_text(xSelection->getString());
+ sSelection = xSelection->getString();
}
+ if (!sSelection.isEmpty())
+ m_xEdittext->set_text(sSelection);
+ m_xEdittext->select_region(0, -1);
return;
}
diff --git a/cui/source/inc/QrCodeGenDialog.hxx b/cui/source/inc/QrCodeGenDialog.hxx
index 2c205c6a85d4..001df88c5581 100644
--- a/cui/source/inc/QrCodeGenDialog.hxx
+++ b/cui/source/inc/QrCodeGenDialog.hxx
@@ -30,7 +30,7 @@ protected:
private:
css::uno::Reference<css::frame::XModel> m_xModel;
- std::unique_ptr<weld::Entry> m_xEdittext;
+ std::unique_ptr<weld::TextView> m_xEdittext;
std::unique_ptr<weld::RadioButton> m_xECC[4];
std::unique_ptr<weld::SpinButton> m_xSpinBorder;
std::unique_ptr<weld::ComboBox> m_xComboType;
diff --git a/cui/uiconfig/ui/qrcodegen.ui b/cui/uiconfig/ui/qrcodegen.ui
index 4f015dccfde3..7078e3aa44a5 100644
--- a/cui/uiconfig/ui/qrcodegen.ui
+++ b/cui/uiconfig/ui/qrcodegen.ui
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.38.2 -->
+<!-- Generated with glade 3.40.0 -->
<interface domain="cui">
<requires lib="gtk+" version="3.20"/>
<object class="GtkAdjustment" id="margin_value">
@@ -8,9 +8,12 @@
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
+ <object class="GtkTextBuffer" id="textbuffer1">
+ <property name="text" translatable="yes" context="qrcodegen|edit_name">www.libreoffice.org</property>
+ </object>
<object class="GtkDialog" id="QrCodeGenDialog">
- <property name="can_focus">False</property>
- <property name="border_width">6</property>
+ <property name="can-focus">False</property>
+ <property name="border-width">6</property>
<property name="title" translatable="yes" context="qrcodegen|QrCodeGenDialog">QR and Barcode</property>
<property name="modal">True</property>
<property name="default-width">0</property>
@@ -95,43 +98,27 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
+ <property name="vexpand">True</property>
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
- <!-- n-columns=2 n-rows=3 -->
+ <!-- n-columns=2 n-rows=4 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">6</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
<property name="row-spacing">6</property>
<property name="column-spacing">12</property>
<child>
- <object class="GtkEntry" id="edit_text">
- <property name="visible">True</property>
- <property name="can-focus">True</property>
- <property name="hexpand">True</property>
- <property name="activates-default">True</property>
- <property name="truncate-multiline">True</property>
- <property name="placeholder-text" translatable="yes" context="qrcodegen|edit_name">www.libreoffice.org</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="edit_text-atkobject">
- <property name="AtkObject::accessible-description" translatable="yes" context="qr text">The text from which to generate the code.</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left-attach">1</property>
- <property name="top-attach">0</property>
- </packing>
- </child>
- <child>
<object class="GtkLabel" id="label_text">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
+ <property name="valign">start</property>
<property name="label" translatable="yes" context="qrcodegen|label_text" comments="Text to be stored in the QR">URL/Text:</property>
<property name="use-underline">True</property>
- <property name="mnemonic-widget">edit_text</property>
<property name="xalign">0</property>
</object>
<packing>
@@ -157,22 +144,22 @@
<child>
<object class="GtkLabel" id="label_type">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="qrcodegen|label_type" comments="Select type">Type:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">choose_type</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">choose_type</property>
<property name="xalign">0</property>
</object>
<packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="choose_type">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="hexpand">True</property>
<property name="active">0</property>
<items>
@@ -186,9 +173,8 @@
</child>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- <property name="width">2</property>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
</packing>
</child>
<child>
@@ -347,6 +333,34 @@
<property name="top-attach">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="hscrollbar-policy">always</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkTextView" id="edit_text">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="buffer">textbuffer1</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="edit_text-atkobject">
+ <property name="AtkObject::accessible-description" translatable="yes" context="qr text">The text from which to generate the code.</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
</object>
</child>
<child type="label">