kbrown / rpms / libreoffice

Forked from rpms/libreoffice 2 years ago
Clone

Blame SOURCES/0024-lokdocview-Modernise-LOKDocView-as-GObject.patch

f325b2
From 9d8fd399aa92d5bcfc11399f296ed2ffdd741286 Mon Sep 17 00:00:00 2001
f325b2
From: Pranav Kant <pranavk@gnome.org>
f325b2
Date: Sat, 6 Jun 2015 03:10:31 +0530
f325b2
Subject: [PATCH 024/398] lokdocview: Modernise LOKDocView as GObject
f325b2
f325b2
Change-Id: I3bbd07ce8163890f9b88567966622dd4fbe9d94d
f325b2
(cherry picked from commit c5f1f7ad2710914fdd6645dd8ce958c70d1d8381)
f325b2
---
f325b2
 include/LibreOfficeKit/LibreOfficeKitGtk.h | 63 ++++++++++---------
f325b2
 libreofficekit/source/gtk/lokdocview.cxx   | 97 +++++++++++++-----------------
f325b2
 2 files changed, 77 insertions(+), 83 deletions(-)
f325b2
f325b2
diff --git a/include/LibreOfficeKit/LibreOfficeKitGtk.h b/include/LibreOfficeKit/LibreOfficeKitGtk.h
f325b2
index 069c565435bb..747e45e531f9 100644
f325b2
--- a/include/LibreOfficeKit/LibreOfficeKitGtk.h
f325b2
+++ b/include/LibreOfficeKit/LibreOfficeKitGtk.h
f325b2
@@ -18,9 +18,13 @@
f325b2
 
f325b2
 G_BEGIN_DECLS
f325b2
 
f325b2
-#define LOK_DOC_VIEW(obj)          GTK_CHECK_CAST (obj, lok_doc_view_get_type(), LOKDocView)
f325b2
-#define LOK_DOC_VIEW_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, lok_doc_view_get_type(), LOKDocViewClass)
f325b2
-#define IS_LOK_DOC_VIEW(obj)       GTK_CHECK_TYPE (obj, lok_doc_view_get_type())
f325b2
+#define LOK_TYPE_DOC_VIEW            (lok_doc_view_get_type())
f325b2
+#define LOK_DOC_VIEW(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), LOK_TYPE_DOC_VIEW, LOKDocView))
f325b2
+#define LOK_IS_DOC_VIEW(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), LOK_TYPE_DOC_VIEW))
f325b2
+#define LOK_DOC_VIEW_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),  LOK_TYPE_DOC_VIEW, LOKDocViewClass))
f325b2
+#define LOK_IS_DOC_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),  LOK_TYPE_DOC_VIEW))
f325b2
+#define LOK_DOC_VIEW_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  LOK_TYPE_DOC_VIEW, LOKDocViewClass))
f325b2
+
f325b2
 
f325b2
 typedef struct _LOKDocView       LOKDocView;
f325b2
 typedef struct _LOKDocViewClass  LOKDocViewClass;
f325b2
@@ -40,40 +44,45 @@ struct _LOKDocViewClass
f325b2
   void (* part_changed) (LOKDocView* pView, int new_part);
f325b2
 };
f325b2
 
f325b2
-guint           lok_doc_view_get_type        (void);
f325b2
-GtkWidget*      lok_doc_view_new             ( LibreOfficeKit* pOffice );
f325b2
-gboolean        lok_doc_view_open_document   (LOKDocView* pDocView,
f325b2
-                                             char* pPath);
f325b2
+GType                          lok_doc_view_get_type               (void);
f325b2
+GtkWidget*                     lok_doc_view_new                    (LibreOfficeKit* pOffice );
f325b2
+gboolean                       lok_doc_view_open_document          (LOKDocView* pDocView,
f325b2
+                                                                    char* pPath);
f325b2
 
f325b2
 /// Gets the document the viewer displays.
f325b2
-LibreOfficeKitDocument* lok_doc_view_get_document(LOKDocView* pDocView);
f325b2
-
f325b2
-void            lok_doc_view_set_zoom        (LOKDocView* pDocView,
f325b2
-                                             float fZoom);
f325b2
-float           lok_doc_view_get_zoom        (LOKDocView* pDocView);
f325b2
-
f325b2
-int             lok_doc_view_get_parts       (LOKDocView* pDocView);
f325b2
-int             lok_doc_view_get_part        (LOKDocView* pDocView);
f325b2
-void            lok_doc_view_set_part        (LOKDocView* pDocView,
f325b2
-                                             int nPart);
f325b2
-char*           lok_doc_view_get_part_name   (LOKDocView* pDocView,
f325b2
-                                             int nPart);
f325b2
-void            lok_doc_view_set_partmode    (LOKDocView* pDocView,
f325b2
-                                             int nPartMode);
f325b2
+LibreOfficeKitDocument*        lok_doc_view_get_document           (LOKDocView* pDocView);
f325b2
+
f325b2
+void                           lok_doc_view_set_zoom               (LOKDocView* pDocView,
f325b2
+                                                                    float fZoom);
f325b2
+float                          lok_doc_view_get_zoom               (LOKDocView* pDocView);
f325b2
+
f325b2
+int                            lok_doc_view_get_parts              (LOKDocView* pDocView);
f325b2
+int                            lok_doc_view_get_part               (LOKDocView* pDocView);
f325b2
+void                           lok_doc_view_set_part               (LOKDocView* pDocView,
f325b2
+                                                                    int nPart);
f325b2
+char*                          lok_doc_view_get_part_name          (LOKDocView* pDocView,
f325b2
+                                                                    int nPart);
f325b2
+void                           lok_doc_view_set_partmode           (LOKDocView* pDocView,
f325b2
+                                                                    int nPartMode);
f325b2
 /// Sets if the viewer is actually an editor or not.
f325b2
-void            lok_doc_view_set_edit        (LOKDocView* pDocView,
f325b2
-                                             gboolean bEdit);
f325b2
+void                           lok_doc_view_set_edit               (LOKDocView* pDocView,
f325b2
+                                                                    gboolean bEdit);
f325b2
 /// Gets if the viewer is actually an editor or not.
f325b2
-gboolean        lok_doc_view_get_edit        (LOKDocView* pDocView);
f325b2
+gboolean                       lok_doc_view_get_edit               (LOKDocView* pDocView);
f325b2
 
f325b2
 /// Posts the .uno: command to the LibreOfficeKit.
f325b2
-void            lok_doc_view_post_command    (LOKDocView* pDocView, const char* pCommand, const char* pArguments);
f325b2
+void                           lok_doc_view_post_command           (LOKDocView* pDocView,
f325b2
+                                                                    const char* pCommand,
f325b2
+                                                                    const char* pArguments);
f325b2
 
f325b2
 /// Posts a keyboard event to LibreOfficeKit.
f325b2
-void            lok_doc_view_post_key    (GtkWidget* pWidget, GdkEventKey* pEvent, gpointer pData);
f325b2
+void                           lok_doc_view_post_key               (GtkWidget* pWidget,
f325b2
+                                                                    GdkEventKey* pEvent,
f325b2
+                                                                    gpointer pData);
f325b2
 
f325b2
 /// Get the visible area of the document (in twips).
f325b2
-void lok_doc_view_get_visarea(LOKDocView* pThis, GdkRectangle* pArea);
f325b2
+void                           lok_doc_view_get_visarea            (LOKDocView* pThis,
f325b2
+                                                                    GdkRectangle* pArea);
f325b2
 
f325b2
 G_END_DECLS
f325b2
 
f325b2
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
f325b2
index b1e31887599d..9b09ef6452bb 100644
f325b2
--- a/libreofficekit/source/gtk/lokdocview.cxx
f325b2
+++ b/libreofficekit/source/gtk/lokdocview.cxx
f325b2
@@ -37,26 +37,6 @@
f325b2
 // Number of handles around a graphic selection.
f325b2
 #define GRAPHIC_HANDLE_COUNT 8
f325b2
 
f325b2
-namespace {
f325b2
-
f325b2
-/// Sets rWidth and rHeight from a "width, height" string.
f325b2
-void payloadToSize(const char* pPayload, long& rWidth, long& rHeight)
f325b2
-{
f325b2
-    rWidth = rHeight = 0;
f325b2
-    gchar** ppCoordinates = g_strsplit(pPayload, ", ", 2);
f325b2
-    gchar** ppCoordinate = ppCoordinates;
f325b2
-    if (!*ppCoordinate)
f325b2
-        return;
f325b2
-    rWidth = atoi(*ppCoordinate);
f325b2
-    ++ppCoordinate;
f325b2
-    if (!*ppCoordinate)
f325b2
-        return;
f325b2
-    rHeight = atoi(*ppCoordinate);
f325b2
-    g_strfreev(ppCoordinates);
f325b2
-}
f325b2
-
f325b2
-}
f325b2
-
f325b2
 /// Holds data used by LOKDocView only.
f325b2
 struct LOKDocView_Impl
f325b2
 {
f325b2
@@ -216,6 +196,44 @@ struct LOKDocView_Impl
f325b2
     void setTilesInvalid(const GdkRectangle& rRectangle);
f325b2
 };
f325b2
 
f325b2
+enum
f325b2
+{
f325b2
+    EDIT_CHANGED,
f325b2
+    COMMAND_CHANGED,
f325b2
+    SEARCH_NOT_FOUND,
f325b2
+    PART_CHANGED,
f325b2
+    LAST_SIGNAL
f325b2
+};
f325b2
+
f325b2
+
f325b2
+static guint doc_view_signals[LAST_SIGNAL] = { 0 };
f325b2
+
f325b2
+
f325b2
+G_DEFINE_TYPE(LOKDocView, lok_doc_view, GTK_TYPE_SCROLLED_WINDOW)
f325b2
+
f325b2
+
f325b2
+namespace {
f325b2
+
f325b2
+/// Sets rWidth and rHeight from a "width, height" string.
f325b2
+void payloadToSize(const char* pPayload, long& rWidth, long& rHeight)
f325b2
+{
f325b2
+    rWidth = rHeight = 0;
f325b2
+    gchar** ppCoordinates = g_strsplit(pPayload, ", ", 2);
f325b2
+    gchar** ppCoordinate = ppCoordinates;
f325b2
+    if (!*ppCoordinate)
f325b2
+        return;
f325b2
+    rWidth = atoi(*ppCoordinate);
f325b2
+    ++ppCoordinate;
f325b2
+    if (!*ppCoordinate)
f325b2
+        return;
f325b2
+    rHeight = atoi(*ppCoordinate);
f325b2
+    g_strfreev(ppCoordinates);
f325b2
+}
f325b2
+
f325b2
+}
f325b2
+
f325b2
+
f325b2
+
f325b2
 namespace {
f325b2
 
f325b2
 /// Implementation of the global callback handler, invoked by globalCallback();
f325b2
@@ -1073,16 +1091,7 @@ void LOKDocView_Impl::globalCallbackWorkerImpl(int nType, const char* pPayload)
f325b2
 #endif
f325b2
 }
f325b2
 
f325b2
-enum
f325b2
-{
f325b2
-    EDIT_CHANGED,
f325b2
-    COMMAND_CHANGED,
f325b2
-    SEARCH_NOT_FOUND,
f325b2
-    PART_CHANGED,
f325b2
-    LAST_SIGNAL
f325b2
-};
f325b2
 
f325b2
-static guint doc_view_signals[LAST_SIGNAL] = { 0 };
f325b2
 
f325b2
 void LOKDocView_Impl::commandChanged(const std::string& rString)
f325b2
 {
f325b2
@@ -1100,9 +1109,8 @@ void LOKDocView_Impl::setPart(const std::string& rString)
f325b2
     renderDocument(0);
f325b2
 }
f325b2
 
f325b2
-static void lok_doc_view_class_init( gpointer ptr )
f325b2
+static void lok_doc_view_class_init (LOKDocViewClass* pClass)
f325b2
 {
f325b2
-    LOKDocViewClass* pClass = static_cast<LOKDocViewClass *>(ptr);
f325b2
     GObjectClass *gobject_class = G_OBJECT_CLASS(pClass);
f325b2
     pClass->edit_changed = NULL;
f325b2
     doc_view_signals[EDIT_CHANGED] =
f325b2
@@ -1146,9 +1154,8 @@ static void lok_doc_view_class_init( gpointer ptr )
f325b2
                      G_TYPE_INT);
f325b2
 }
f325b2
 
f325b2
-static void lok_doc_view_init( GTypeInstance* pInstance, gpointer )
f325b2
+static void lok_doc_view_init (LOKDocView* pDocView)
f325b2
 {
f325b2
-    LOKDocView* pDocView = reinterpret_cast<LOKDocView *>(pInstance);
f325b2
     // Gtk ScrolledWindow is apparently not fully initialised yet, we specifically
f325b2
     // have to set the [hv]adjustment to prevent GTK assertions from firing, see
f325b2
     // https://bugzilla.gnome.org/show_bug.cgi?id=438114 for more info.
f325b2
@@ -1183,29 +1190,7 @@ static void lok_doc_view_init( GTypeInstance* pInstance, gpointer )
f325b2
     g_signal_connect(G_OBJECT(pDocView), "destroy", G_CALLBACK(LOKDocView_Impl::destroy), 0);
f325b2
 }
f325b2
 
f325b2
-SAL_DLLPUBLIC_EXPORT guint lok_doc_view_get_type()
f325b2
-{
f325b2
-    static guint lok_doc_view_type = 0;
f325b2
-
f325b2
-    if (!lok_doc_view_type)
f325b2
-    {
f325b2
-        char pName[] = "LokDocView";
f325b2
-        GtkTypeInfo lok_doc_view_info =
f325b2
-        {
f325b2
-            pName,
f325b2
-            sizeof( LOKDocView ),
f325b2
-            sizeof( LOKDocViewClass ),
f325b2
-            lok_doc_view_class_init,
f325b2
-            lok_doc_view_init,
f325b2
-            NULL,
f325b2
-            NULL,
f325b2
-            nullptr
f325b2
-        };
f325b2
-
f325b2
-        lok_doc_view_type = gtk_type_unique( gtk_scrolled_window_get_type(), &lok_doc_view_info );
f325b2
-    }
f325b2
-    return lok_doc_view_type;
f325b2
-}
f325b2
+SAL_DLLPUBLIC_EXPORT GType lok_doc_view_get_type();
f325b2
 
f325b2
 SAL_DLLPUBLIC_EXPORT GtkWidget* lok_doc_view_new( LibreOfficeKit* pOffice )
f325b2
 {
f325b2
-- 
f325b2
2.12.0
f325b2