[Libreoffice-commits] core.git: include/vcl vcl/source vcl/unx

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Mon Jul 6 15:57:25 UTC 2020


 include/vcl/weld.hxx          |    5 +++++
 vcl/source/app/salvtables.cxx |   16 ++++++++++++++++
 vcl/unx/gtk3/gtk3gtkinst.cxx  |   29 +++++++++++++++++++++++++++++
 3 files changed, 50 insertions(+)

New commits:
commit 57ac9d6176305ad1d405b83a9423cd103bdaa20b
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon Jul 6 11:27:24 2020 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Mon Jul 6 17:56:43 2020 +0200

    add get_editable and clipboard interaction to TextView
    
    Change-Id: I5d0e1823685ef2334571d5279a300d177ac4a9db
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98206
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index f2c6713dc77c..8c9788a2f589 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -2014,6 +2014,7 @@ public:
     virtual bool get_selection_bounds(int& rStartPos, int& rEndPos) = 0;
     virtual void replace_selection(const OUString& rText) = 0;
     virtual void set_editable(bool bEditable) = 0;
+    virtual bool get_editable() const = 0;
     virtual void set_monospace(bool bMonospace) = 0;
     int get_height_rows(int nRows) const
     {
@@ -2030,6 +2031,10 @@ public:
         m_aCursorPositionHdl = rLink;
     }
 
+    virtual void cut_clipboard() = 0;
+    virtual void copy_clipboard() = 0;
+    virtual void paste_clipboard() = 0;
+
     virtual int vadjustment_get_value() const = 0;
     virtual int vadjustment_get_upper() const = 0;
     virtual int vadjustment_get_lower() const = 0;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 6343dfe21ffe..dcc4b53b9887 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -5463,6 +5463,7 @@ public:
     }
 
     virtual void set_editable(bool bEditable) override { m_xTextView->SetReadOnly(!bEditable); }
+    virtual bool get_editable() const override { return !m_xTextView->IsReadOnly(); }
 
     virtual void set_monospace(bool bMonospace) override
     {
@@ -5485,6 +5486,21 @@ public:
         weld::TextView::connect_cursor_position(rLink);
     }
 
+    virtual void cut_clipboard() override
+    {
+        m_xTextView->Cut();
+    }
+
+    virtual void copy_clipboard() override
+    {
+        m_xTextView->Copy();
+    }
+
+    virtual void paste_clipboard() override
+    {
+        m_xTextView->Paste();
+    }
+
     virtual int vadjustment_get_value() const override
     {
         ScrollBar& rVertScrollBar = m_xTextView->GetVScrollBar();
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index bbcb6218aed3..9fc0809f0a3e 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -12484,6 +12484,11 @@ public:
         gtk_text_view_set_editable(m_pTextView, bEditable);
     }
 
+    virtual bool get_editable() const override
+    {
+        return gtk_text_view_get_editable(m_pTextView);
+    }
+
     virtual void set_monospace(bool bMonospace) override
     {
         gtk_text_view_set_monospace(m_pTextView, bMonospace);
@@ -12505,6 +12510,30 @@ public:
         g_signal_handler_unblock(m_pVAdjustment, m_nVAdjustChangedSignalId);
     }
 
+    virtual void cut_clipboard() override
+    {
+        GtkClipboard *pClipboard = gtk_widget_get_clipboard(GTK_WIDGET(m_pTextView),
+                                                            GDK_SELECTION_CLIPBOARD);
+        GtkTextBuffer* pBuffer = gtk_text_view_get_buffer(m_pTextView);
+        gtk_text_buffer_cut_clipboard(pBuffer, pClipboard, get_editable());
+    }
+
+    virtual void copy_clipboard() override
+    {
+        GtkClipboard *pClipboard = gtk_widget_get_clipboard(GTK_WIDGET(m_pTextView),
+                                                            GDK_SELECTION_CLIPBOARD);
+        GtkTextBuffer* pBuffer = gtk_text_view_get_buffer(m_pTextView);
+        gtk_text_buffer_copy_clipboard(pBuffer, pClipboard);
+    }
+
+    virtual void paste_clipboard() override
+    {
+        GtkClipboard *pClipboard = gtk_widget_get_clipboard(GTK_WIDGET(m_pTextView),
+                                                            GDK_SELECTION_CLIPBOARD);
+        GtkTextBuffer* pBuffer = gtk_text_view_get_buffer(m_pTextView);
+        gtk_text_buffer_paste_clipboard(pBuffer, pClipboard, nullptr, get_editable());
+    }
+
     virtual int vadjustment_get_value() const override
     {
         return gtk_adjustment_get_value(m_pVAdjustment);


More information about the Libreoffice-commits mailing list