kbrown / rpms / libreoffice

Forked from rpms/libreoffice 2 years ago
Clone

Blame SOURCES/0002-Resolves-tdf-62702-allow-ole-objects-to-be-inserted-.patch

dc0b3e
From 8daa13abb5ebec4d0b867f1d56ebc8516ae3bb71 Mon Sep 17 00:00:00 2001
dc0b3e
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
dc0b3e
Date: Tue, 9 May 2017 13:27:06 +0100
dc0b3e
Subject: [PATCH 2/2] Resolves: tdf#62702 allow ole objects to be inserted as
dc0b3e
 icons
dc0b3e
dc0b3e
under windows on "create new", "further objects" you get the
dc0b3e
native windows insert object dialog which has the "Display As Icon"
dc0b3e
option, but on Linux etc (or using our own dialog) there isn't that
dc0b3e
option
dc0b3e
dc0b3e
so add a "Display as icon" checkbox in our own dialog and generate
dc0b3e
an icon through SvFileInformationManager::GetImage
dc0b3e
dc0b3e
Change-Id: I0a400189031900bd1e387465ec4ba57847cb5394
dc0b3e
(cherry picked from commit f505f95d466d4d3348f41dfd93e5c243d15c6c71)
dc0b3e
---
dc0b3e
 cui/source/dialogs/insdlg.cxx      |  16 +++++
dc0b3e
 cui/source/inc/insdlg.hxx          |   1 +
dc0b3e
 cui/uiconfig/ui/insertoleobject.ui | 131 +++++++++++++++++++++----------------
dc0b3e
 3 files changed, 90 insertions(+), 58 deletions(-)
dc0b3e
dc0b3e
diff --git a/cui/source/dialogs/insdlg.cxx b/cui/source/dialogs/insdlg.cxx
dc0b3e
index 47af495..ac404bb 100644
dc0b3e
--- a/cui/source/dialogs/insdlg.cxx
dc0b3e
+++ b/cui/source/dialogs/insdlg.cxx
dc0b3e
@@ -34,6 +34,7 @@
dc0b3e
 
dc0b3e
 #include "insdlg.hxx"
dc0b3e
 #include <dialmgr.hxx>
dc0b3e
+#include <svtools/imagemgr.hxx>
dc0b3e
 #include <svtools/sores.hxx>
dc0b3e
 
dc0b3e
 #include <tools/urlobj.hxx>
dc0b3e
@@ -164,6 +165,7 @@ SvInsertOleDlg::SvInsertOleDlg
dc0b3e
     get(m_pEdFilepath, "urled");
dc0b3e
     get(m_pBtnFilepath, "urlbtn");
dc0b3e
     get(m_pCbFilelink, "linktofile");
dc0b3e
+    get(m_pCbAsIcon, "asicon");
dc0b3e
     m_pLbObjecttype->SetDoubleClickHdl( LINK( this, SvInsertOleDlg, DoubleClickHdl ) );
dc0b3e
     m_pBtnFilepath->SetClickHdl( LINK( this, SvInsertOleDlg, BrowseHdl ) );
dc0b3e
     Link<Button*,void> aLink( LINK( this, SvInsertOleDlg, RadioHdl ) );
dc0b3e
@@ -188,6 +190,7 @@ void SvInsertOleDlg::dispose()
dc0b3e
     m_pEdFilepath.clear();
dc0b3e
     m_pBtnFilepath.clear();
dc0b3e
     m_pCbFilelink.clear();
dc0b3e
+    m_pCbAsIcon.clear();
dc0b3e
     InsertObjectDialog_Impl::dispose();
dc0b3e
 }
dc0b3e
 
dc0b3e
@@ -328,6 +331,19 @@ short SvInsertOleDlg::Execute()
dc0b3e
                 aErr = aErr.replaceFirst( "%", aFileName );
dc0b3e
                 ScopedVclPtrInstance<MessageDialog>(this, aErr)->Execute();
dc0b3e
             }
dc0b3e
+            else
dc0b3e
+            {
dc0b3e
+                if (m_pCbAsIcon->IsChecked())
dc0b3e
+                {
dc0b3e
+                    //something nice here I guess would be to write the filename into
dc0b3e
+                    //the image with this icon above it
dc0b3e
+                    Image aImage = SvFileInformationManager::GetImage(aURL, true);
dc0b3e
+                    SvMemoryStream aTemp;
dc0b3e
+                    WriteDIBBitmapEx(aImage.GetBitmapEx(), aTemp);
dc0b3e
+                    m_aIconMetaFile = Sequence<sal_Int8>(static_cast<const sal_Int8*>(aTemp.GetData()), aTemp.Seek(STREAM_SEEK_TO_END));
dc0b3e
+                    m_aIconMediaType = "application/x-openoffice-bitmap;windows_formatname=\"Bitmap\"";
dc0b3e
+                }
dc0b3e
+            }
dc0b3e
         }
dc0b3e
     }
dc0b3e
 
dc0b3e
diff --git a/cui/source/inc/insdlg.hxx b/cui/source/inc/insdlg.hxx
dc0b3e
index cd6a45a..4b42774 100644
dc0b3e
--- a/cui/source/inc/insdlg.hxx
dc0b3e
+++ b/cui/source/inc/insdlg.hxx
dc0b3e
@@ -64,6 +64,7 @@ class SvInsertOleDlg : public InsertObjectDialog_Impl
dc0b3e
     VclPtr<Edit> m_pEdFilepath;
dc0b3e
     VclPtr<PushButton> m_pBtnFilepath;
dc0b3e
     VclPtr<CheckBox> m_pCbFilelink;
dc0b3e
+    VclPtr<CheckBox> m_pCbAsIcon;
dc0b3e
     const SvObjectServerList* m_pServers;
dc0b3e
 
dc0b3e
     css::uno::Sequence< sal_Int8 > m_aIconMetaFile;
dc0b3e
diff --git a/cui/uiconfig/ui/insertoleobject.ui b/cui/uiconfig/ui/insertoleobject.ui
dc0b3e
index 5ddf229..1aaeecb 100644
dc0b3e
--- a/cui/uiconfig/ui/insertoleobject.ui
dc0b3e
+++ b/cui/uiconfig/ui/insertoleobject.ui
dc0b3e
@@ -1,5 +1,5 @@
dc0b3e
 
dc0b3e
-
dc0b3e
+
dc0b3e
 <interface>
dc0b3e
   <requires lib="gtk+" version="3.0"/>
dc0b3e
   <object class="GtkDialog" id="InsertOLEObjectDialog">
dc0b3e
@@ -12,6 +12,63 @@
dc0b3e
         <property name="can_focus">False</property>
dc0b3e
         <property name="orientation">vertical</property>
dc0b3e
         <property name="spacing">12</property>
dc0b3e
+        <child internal-child="action_area">
dc0b3e
+          <object class="GtkButtonBox" id="dialog-action_area1">
dc0b3e
+            <property name="can_focus">False</property>
dc0b3e
+            <property name="layout_style">end</property>
dc0b3e
+            <child>
dc0b3e
+              <object class="GtkButton" id="ok">
dc0b3e
+                <property name="label">gtk-ok</property>
dc0b3e
+                <property name="visible">True</property>
dc0b3e
+                <property name="can_focus">True</property>
dc0b3e
+                <property name="can_default">True</property>
dc0b3e
+                <property name="has_default">True</property>
dc0b3e
+                <property name="receives_default">True</property>
dc0b3e
+                <property name="use_stock">True</property>
dc0b3e
+              </object>
dc0b3e
+              <packing>
dc0b3e
+                <property name="expand">False</property>
dc0b3e
+                <property name="fill">True</property>
dc0b3e
+                <property name="position">0</property>
dc0b3e
+              </packing>
dc0b3e
+            </child>
dc0b3e
+            <child>
dc0b3e
+              <object class="GtkButton" id="cancel">
dc0b3e
+                <property name="label">gtk-cancel</property>
dc0b3e
+                <property name="visible">True</property>
dc0b3e
+                <property name="can_focus">True</property>
dc0b3e
+                <property name="receives_default">True</property>
dc0b3e
+                <property name="use_stock">True</property>
dc0b3e
+              </object>
dc0b3e
+              <packing>
dc0b3e
+                <property name="expand">False</property>
dc0b3e
+                <property name="fill">True</property>
dc0b3e
+                <property name="position">1</property>
dc0b3e
+              </packing>
dc0b3e
+            </child>
dc0b3e
+            <child>
dc0b3e
+              <object class="GtkButton" id="help">
dc0b3e
+                <property name="label">gtk-help</property>
dc0b3e
+                <property name="visible">True</property>
dc0b3e
+                <property name="can_focus">True</property>
dc0b3e
+                <property name="receives_default">True</property>
dc0b3e
+                <property name="use_stock">True</property>
dc0b3e
+              </object>
dc0b3e
+              <packing>
dc0b3e
+                <property name="expand">False</property>
dc0b3e
+                <property name="fill">True</property>
dc0b3e
+                <property name="position">2</property>
dc0b3e
+                <property name="secondary">True</property>
dc0b3e
+              </packing>
dc0b3e
+            </child>
dc0b3e
+          </object>
dc0b3e
+          <packing>
dc0b3e
+            <property name="expand">False</property>
dc0b3e
+            <property name="fill">True</property>
dc0b3e
+            <property name="pack_type">end</property>
dc0b3e
+            <property name="position">1</property>
dc0b3e
+          </packing>
dc0b3e
+        </child>
dc0b3e
         <child>
dc0b3e
           <object class="GtkBox" id="box1">
dc0b3e
             <property name="width_request">400</property>
dc0b3e
@@ -162,6 +219,21 @@
dc0b3e
                             <property name="top_attach">1</property>
dc0b3e
                           </packing>
dc0b3e
                         </child>
dc0b3e
+                        <child>
dc0b3e
+                          <object class="GtkCheckButton" id="asicon">
dc0b3e
+                            <property name="label" translatable="yes">Display as icon</property>
dc0b3e
+                            <property name="visible">True</property>
dc0b3e
+                            <property name="can_focus">True</property>
dc0b3e
+                            <property name="receives_default">False</property>
dc0b3e
+                            <property name="xalign">0</property>
dc0b3e
+                            <property name="draw_indicator">True</property>
dc0b3e
+                          </object>
dc0b3e
+                          <packing>
dc0b3e
+                            <property name="left_attach">0</property>
dc0b3e
+                            <property name="top_attach">2</property>
dc0b3e
+                            <property name="width">2</property>
dc0b3e
+                          </packing>
dc0b3e
+                        </child>
dc0b3e
                       </object>
dc0b3e
                     </child>
dc0b3e
                   </object>
dc0b3e
@@ -191,63 +263,6 @@
dc0b3e
             <property name="position">0</property>
dc0b3e
           </packing>
dc0b3e
         </child>
dc0b3e
-        <child internal-child="action_area">
dc0b3e
-          <object class="GtkButtonBox" id="dialog-action_area1">
dc0b3e
-            <property name="can_focus">False</property>
dc0b3e
-            <property name="layout_style">end</property>
dc0b3e
-            <child>
dc0b3e
-              <object class="GtkButton" id="ok">
dc0b3e
-                <property name="label">gtk-ok</property>
dc0b3e
-                <property name="visible">True</property>
dc0b3e
-                <property name="can_focus">True</property>
dc0b3e
-                <property name="can_default">True</property>
dc0b3e
-                <property name="has_default">True</property>
dc0b3e
-                <property name="receives_default">True</property>
dc0b3e
-                <property name="use_stock">True</property>
dc0b3e
-              </object>
dc0b3e
-              <packing>
dc0b3e
-                <property name="expand">False</property>
dc0b3e
-                <property name="fill">True</property>
dc0b3e
-                <property name="position">0</property>
dc0b3e
-              </packing>
dc0b3e
-            </child>
dc0b3e
-            <child>
dc0b3e
-              <object class="GtkButton" id="cancel">
dc0b3e
-                <property name="label">gtk-cancel</property>
dc0b3e
-                <property name="visible">True</property>
dc0b3e
-                <property name="can_focus">True</property>
dc0b3e
-                <property name="receives_default">True</property>
dc0b3e
-                <property name="use_stock">True</property>
dc0b3e
-              </object>
dc0b3e
-              <packing>
dc0b3e
-                <property name="expand">False</property>
dc0b3e
-                <property name="fill">True</property>
dc0b3e
-                <property name="position">1</property>
dc0b3e
-              </packing>
dc0b3e
-            </child>
dc0b3e
-            <child>
dc0b3e
-              <object class="GtkButton" id="help">
dc0b3e
-                <property name="label">gtk-help</property>
dc0b3e
-                <property name="visible">True</property>
dc0b3e
-                <property name="can_focus">True</property>
dc0b3e
-                <property name="receives_default">True</property>
dc0b3e
-                <property name="use_stock">True</property>
dc0b3e
-              </object>
dc0b3e
-              <packing>
dc0b3e
-                <property name="expand">False</property>
dc0b3e
-                <property name="fill">True</property>
dc0b3e
-                <property name="position">2</property>
dc0b3e
-                <property name="secondary">True</property>
dc0b3e
-              </packing>
dc0b3e
-            </child>
dc0b3e
-          </object>
dc0b3e
-          <packing>
dc0b3e
-            <property name="expand">False</property>
dc0b3e
-            <property name="fill">True</property>
dc0b3e
-            <property name="pack_type">end</property>
dc0b3e
-            <property name="position">1</property>
dc0b3e
-          </packing>
dc0b3e
-        </child>
dc0b3e
       </object>
dc0b3e
     </child>
dc0b3e
     <action-widgets>
dc0b3e
-- 
dc0b3e
2.9.3
dc0b3e