include/LibreOfficeKit/LibreOfficeKitGtk.h | 73 +++---- libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx | 52 ++--- libreofficekit/source/gtk/lokdocview.cxx | 196 +++++++++----------- 3 files changed, 162 insertions(+), 159 deletions(-)
New commits: commit f5795aa66eef527a658cedb758cfba715b596655 Author: Pranav Kant <pran...@gnome.org> Date: Sat Jun 6 03:10:31 2015 +0530 lokdocview: Modernise LOKDocView as GObject Change-Id: I3bbd07ce8163890f9b88567966622dd4fbe9d94d diff --git a/include/LibreOfficeKit/LibreOfficeKitGtk.h b/include/LibreOfficeKit/LibreOfficeKitGtk.h index 069c565..747e45e 100644 --- a/include/LibreOfficeKit/LibreOfficeKitGtk.h +++ b/include/LibreOfficeKit/LibreOfficeKitGtk.h @@ -18,9 +18,13 @@ G_BEGIN_DECLS -#define LOK_DOC_VIEW(obj) GTK_CHECK_CAST (obj, lok_doc_view_get_type(), LOKDocView) -#define LOK_DOC_VIEW_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, lok_doc_view_get_type(), LOKDocViewClass) -#define IS_LOK_DOC_VIEW(obj) GTK_CHECK_TYPE (obj, lok_doc_view_get_type()) +#define LOK_TYPE_DOC_VIEW (lok_doc_view_get_type()) +#define LOK_DOC_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), LOK_TYPE_DOC_VIEW, LOKDocView)) +#define LOK_IS_DOC_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), LOK_TYPE_DOC_VIEW)) +#define LOK_DOC_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), LOK_TYPE_DOC_VIEW, LOKDocViewClass)) +#define LOK_IS_DOC_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), LOK_TYPE_DOC_VIEW)) +#define LOK_DOC_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), LOK_TYPE_DOC_VIEW, LOKDocViewClass)) + typedef struct _LOKDocView LOKDocView; typedef struct _LOKDocViewClass LOKDocViewClass; @@ -40,40 +44,45 @@ struct _LOKDocViewClass void (* part_changed) (LOKDocView* pView, int new_part); }; -guint lok_doc_view_get_type (void); -GtkWidget* lok_doc_view_new ( LibreOfficeKit* pOffice ); -gboolean lok_doc_view_open_document (LOKDocView* pDocView, - char* pPath); +GType lok_doc_view_get_type (void); +GtkWidget* lok_doc_view_new (LibreOfficeKit* pOffice ); +gboolean lok_doc_view_open_document (LOKDocView* pDocView, + char* pPath); /// Gets the document the viewer displays. -LibreOfficeKitDocument* lok_doc_view_get_document(LOKDocView* pDocView); - -void lok_doc_view_set_zoom (LOKDocView* pDocView, - float fZoom); -float lok_doc_view_get_zoom (LOKDocView* pDocView); - -int lok_doc_view_get_parts (LOKDocView* pDocView); -int lok_doc_view_get_part (LOKDocView* pDocView); -void lok_doc_view_set_part (LOKDocView* pDocView, - int nPart); -char* lok_doc_view_get_part_name (LOKDocView* pDocView, - int nPart); -void lok_doc_view_set_partmode (LOKDocView* pDocView, - int nPartMode); +LibreOfficeKitDocument* lok_doc_view_get_document (LOKDocView* pDocView); + +void lok_doc_view_set_zoom (LOKDocView* pDocView, + float fZoom); +float lok_doc_view_get_zoom (LOKDocView* pDocView); + +int lok_doc_view_get_parts (LOKDocView* pDocView); +int lok_doc_view_get_part (LOKDocView* pDocView); +void lok_doc_view_set_part (LOKDocView* pDocView, + int nPart); +char* lok_doc_view_get_part_name (LOKDocView* pDocView, + int nPart); +void lok_doc_view_set_partmode (LOKDocView* pDocView, + int nPartMode); /// Sets if the viewer is actually an editor or not. -void lok_doc_view_set_edit (LOKDocView* pDocView, - gboolean bEdit); +void lok_doc_view_set_edit (LOKDocView* pDocView, + gboolean bEdit); /// Gets if the viewer is actually an editor or not. -gboolean lok_doc_view_get_edit (LOKDocView* pDocView); +gboolean lok_doc_view_get_edit (LOKDocView* pDocView); /// Posts the .uno: command to the LibreOfficeKit. -void lok_doc_view_post_command (LOKDocView* pDocView, const char* pCommand, const char* pArguments); +void lok_doc_view_post_command (LOKDocView* pDocView, + const char* pCommand, + const char* pArguments); /// Posts a keyboard event to LibreOfficeKit. -void lok_doc_view_post_key (GtkWidget* pWidget, GdkEventKey* pEvent, gpointer pData); +void lok_doc_view_post_key (GtkWidget* pWidget, + GdkEventKey* pEvent, + gpointer pData); /// Get the visible area of the document (in twips). -void lok_doc_view_get_visarea(LOKDocView* pThis, GdkRectangle* pArea); +void lok_doc_view_get_visarea (LOKDocView* pThis, + GdkRectangle* pArea); G_END_DECLS diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index d34488a..b6c529f 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -37,26 +37,6 @@ // Number of handles around a graphic selection. #define GRAPHIC_HANDLE_COUNT 8 -namespace { - -/// Sets rWidth and rHeight from a "width, height" string. -void payloadToSize(const char* pPayload, long& rWidth, long& rHeight) -{ - rWidth = rHeight = 0; - gchar** ppCoordinates = g_strsplit(pPayload, ", ", 2); - gchar** ppCoordinate = ppCoordinates; - if (!*ppCoordinate) - return; - rWidth = atoi(*ppCoordinate); - ++ppCoordinate; - if (!*ppCoordinate) - return; - rHeight = atoi(*ppCoordinate); - g_strfreev(ppCoordinates); -} - -} - /// Holds data used by LOKDocView only. struct LOKDocView_Impl { @@ -216,6 +196,44 @@ struct LOKDocView_Impl void setTilesInvalid(const GdkRectangle& rRectangle); }; +enum +{ + EDIT_CHANGED, + COMMAND_CHANGED, + SEARCH_NOT_FOUND, + PART_CHANGED, + LAST_SIGNAL +}; + + +static guint doc_view_signals[LAST_SIGNAL] = { 0 }; + + +G_DEFINE_TYPE(LOKDocView, lok_doc_view, GTK_TYPE_SCROLLED_WINDOW) + + +namespace { + +/// Sets rWidth and rHeight from a "width, height" string. +void payloadToSize(const char* pPayload, long& rWidth, long& rHeight) +{ + rWidth = rHeight = 0; + gchar** ppCoordinates = g_strsplit(pPayload, ", ", 2); + gchar** ppCoordinate = ppCoordinates; + if (!*ppCoordinate) + return; + rWidth = atoi(*ppCoordinate); + ++ppCoordinate; + if (!*ppCoordinate) + return; + rHeight = atoi(*ppCoordinate); + g_strfreev(ppCoordinates); +} + +} + + + namespace { /// Implementation of the global callback handler, invoked by globalCallback(); @@ -1073,16 +1091,7 @@ void LOKDocView_Impl::globalCallbackWorkerImpl(int nType, const char* pPayload) #endif } -enum -{ - EDIT_CHANGED, - COMMAND_CHANGED, - SEARCH_NOT_FOUND, - PART_CHANGED, - LAST_SIGNAL -}; -static guint doc_view_signals[LAST_SIGNAL] = { 0 }; void LOKDocView_Impl::commandChanged(const std::string& rString) { @@ -1100,9 +1109,8 @@ void LOKDocView_Impl::setPart(const std::string& rString) renderDocument(0); } -static void lok_doc_view_class_init( gpointer ptr ) +static void lok_doc_view_class_init (LOKDocViewClass* pClass) { - LOKDocViewClass* pClass = static_cast<LOKDocViewClass *>(ptr); GObjectClass *gobject_class = G_OBJECT_CLASS(pClass); pClass->edit_changed = NULL; doc_view_signals[EDIT_CHANGED] = @@ -1146,9 +1154,8 @@ static void lok_doc_view_class_init( gpointer ptr ) G_TYPE_INT); } -static void lok_doc_view_init( GTypeInstance* pInstance, gpointer ) +static void lok_doc_view_init (LOKDocView* pDocView) { - LOKDocView* pDocView = reinterpret_cast<LOKDocView *>(pInstance); // Gtk ScrolledWindow is apparently not fully initialised yet, we specifically // have to set the [hv]adjustment to prevent GTK assertions from firing, see // https://bugzilla.gnome.org/show_bug.cgi?id=438114 for more info. @@ -1183,29 +1190,7 @@ static void lok_doc_view_init( GTypeInstance* pInstance, gpointer ) g_signal_connect(G_OBJECT(pDocView), "destroy", G_CALLBACK(LOKDocView_Impl::destroy), 0); } -SAL_DLLPUBLIC_EXPORT guint lok_doc_view_get_type() -{ - static guint lok_doc_view_type = 0; - - if (!lok_doc_view_type) - { - char pName[] = "LokDocView"; - GtkTypeInfo lok_doc_view_info = - { - pName, - sizeof( LOKDocView ), - sizeof( LOKDocViewClass ), - lok_doc_view_class_init, - lok_doc_view_init, - NULL, - NULL, - (GtkClassInitFunc) NULL - }; - - lok_doc_view_type = gtk_type_unique( gtk_scrolled_window_get_type(), &lok_doc_view_info ); - } - return lok_doc_view_type; -} +SAL_DLLPUBLIC_EXPORT GType lok_doc_view_get_type(); SAL_DLLPUBLIC_EXPORT GtkWidget* lok_doc_view_new( LibreOfficeKit* pOffice ) { commit 2e54caf962561b0b304bdffbaa7f070eca91cf23 Author: Pranav Kant <pran...@gnome.org> Date: Sat Jun 6 02:32:54 2015 +0530 lokdocview: Lets follow the GObject naming convention If we are mentioning this type as DocView, we should break it at each capital letter. Change-Id: I76c7eea455281e541b2196a03778018aa127cebe diff --git a/include/LibreOfficeKit/LibreOfficeKitGtk.h b/include/LibreOfficeKit/LibreOfficeKitGtk.h index 9668904..069c565 100644 --- a/include/LibreOfficeKit/LibreOfficeKitGtk.h +++ b/include/LibreOfficeKit/LibreOfficeKitGtk.h @@ -18,9 +18,9 @@ G_BEGIN_DECLS -#define LOK_DOCVIEW(obj) GTK_CHECK_CAST (obj, lok_docview_get_type(), LOKDocView) -#define LOK_DOCVIEW_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, lok_docview_get_type(), LOKDocViewClass) -#define IS_LOK_DOCVIEW(obj) GTK_CHECK_TYPE (obj, lok_docview_get_type()) +#define LOK_DOC_VIEW(obj) GTK_CHECK_CAST (obj, lok_doc_view_get_type(), LOKDocView) +#define LOK_DOC_VIEW_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, lok_doc_view_get_type(), LOKDocViewClass) +#define IS_LOK_DOC_VIEW(obj) GTK_CHECK_TYPE (obj, lok_doc_view_get_type()) typedef struct _LOKDocView LOKDocView; typedef struct _LOKDocViewClass LOKDocViewClass; @@ -40,40 +40,40 @@ struct _LOKDocViewClass void (* part_changed) (LOKDocView* pView, int new_part); }; -guint lok_docview_get_type (void); -GtkWidget* lok_docview_new ( LibreOfficeKit* pOffice ); -gboolean lok_docview_open_document (LOKDocView* pDocView, +guint lok_doc_view_get_type (void); +GtkWidget* lok_doc_view_new ( LibreOfficeKit* pOffice ); +gboolean lok_doc_view_open_document (LOKDocView* pDocView, char* pPath); /// Gets the document the viewer displays. -LibreOfficeKitDocument* lok_docview_get_document(LOKDocView* pDocView); +LibreOfficeKitDocument* lok_doc_view_get_document(LOKDocView* pDocView); -void lok_docview_set_zoom (LOKDocView* pDocView, +void lok_doc_view_set_zoom (LOKDocView* pDocView, float fZoom); -float lok_docview_get_zoom (LOKDocView* pDocView); +float lok_doc_view_get_zoom (LOKDocView* pDocView); -int lok_docview_get_parts (LOKDocView* pDocView); -int lok_docview_get_part (LOKDocView* pDocView); -void lok_docview_set_part (LOKDocView* pDocView, +int lok_doc_view_get_parts (LOKDocView* pDocView); +int lok_doc_view_get_part (LOKDocView* pDocView); +void lok_doc_view_set_part (LOKDocView* pDocView, int nPart); -char* lok_docview_get_part_name (LOKDocView* pDocView, +char* lok_doc_view_get_part_name (LOKDocView* pDocView, int nPart); -void lok_docview_set_partmode (LOKDocView* pDocView, +void lok_doc_view_set_partmode (LOKDocView* pDocView, int nPartMode); /// Sets if the viewer is actually an editor or not. -void lok_docview_set_edit (LOKDocView* pDocView, +void lok_doc_view_set_edit (LOKDocView* pDocView, gboolean bEdit); /// Gets if the viewer is actually an editor or not. -gboolean lok_docview_get_edit (LOKDocView* pDocView); +gboolean lok_doc_view_get_edit (LOKDocView* pDocView); /// Posts the .uno: command to the LibreOfficeKit. -void lok_docview_post_command (LOKDocView* pDocView, const char* pCommand, const char* pArguments); +void lok_doc_view_post_command (LOKDocView* pDocView, const char* pCommand, const char* pArguments); /// Posts a keyboard event to LibreOfficeKit. -void lok_docview_post_key (GtkWidget* pWidget, GdkEventKey* pEvent, gpointer pData); +void lok_doc_view_post_key (GtkWidget* pWidget, GdkEventKey* pEvent, gpointer pData); /// Get the visible area of the document (in twips). -void lok_docview_get_visarea(LOKDocView* pThis, GdkRectangle* pArea); +void lok_doc_view_get_visarea(LOKDocView* pThis, GdkRectangle* pArea); G_END_DECLS diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx index d20f43d..38b29ee 100644 --- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx @@ -71,7 +71,7 @@ static void changeZoom( GtkWidget* pButton, gpointer /* pItem */ ) if ( pDocView ) { - fCurrentZoom = lok_docview_get_zoom( LOK_DOCVIEW(pDocView) ); + fCurrentZoom = lok_doc_view_get_zoom( LOK_DOC_VIEW(pDocView) ); } if ( strcmp(sName, "gtk-zoom-in") == 0) @@ -104,7 +104,7 @@ static void changeZoom( GtkWidget* pButton, gpointer /* pItem */ ) { if ( pDocView ) { - lok_docview_set_zoom( LOK_DOCVIEW(pDocView), fZoom ); + lok_doc_view_set_zoom( LOK_DOC_VIEW(pDocView), fZoom ); } } } @@ -112,10 +112,10 @@ static void changeZoom( GtkWidget* pButton, gpointer /* pItem */ ) /// User clicked on the button -> inform LOKDocView. static void toggleEditing(GtkWidget* /*pButton*/, gpointer /*pItem*/) { - LOKDocView* pLOKDocView = LOK_DOCVIEW(pDocView); + LOKDocView* pLOKDocView = LOK_DOC_VIEW(pDocView); bool bActive = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(pEnableEditing)); - if (bool(lok_docview_get_edit(pLOKDocView)) != bActive) - lok_docview_set_edit(pLOKDocView, bActive); + if (bool(lok_doc_view_get_edit(pLOKDocView)) != bActive) + lok_doc_view_set_edit(pLOKDocView, bActive); } /// Toggle the visibility of the findbar. @@ -137,11 +137,11 @@ static void toggleFindbar(GtkWidget* /*pButton*/, gpointer /*pItem*/) /// Handles the key-press-event of the window. static gboolean signalKey(GtkWidget* pWidget, GdkEventKey* pEvent, gpointer pData) { - LOKDocView* pLOKDocView = LOK_DOCVIEW(pDocView); + LOKDocView* pLOKDocView = LOK_DOC_VIEW(pDocView); #if GTK_CHECK_VERSION(2,18,0) // we need gtk_widget_get_visible() - if (!gtk_widget_get_visible(pFindbar) && bool(lok_docview_get_edit(pLOKDocView))) + if (!gtk_widget_get_visible(pFindbar) && bool(lok_doc_view_get_edit(pLOKDocView))) { - lok_docview_post_key(pWidget, pEvent, pData); + lok_doc_view_post_key(pWidget, pEvent, pData); return TRUE; } #endif @@ -159,9 +159,9 @@ static void doSearch(bool bBackwards) aTree.put(boost::property_tree::ptree::path_type("SearchItem.Backward/type", '/'), "boolean"); aTree.put(boost::property_tree::ptree::path_type("SearchItem.Backward/value", '/'), bBackwards); - LOKDocView* pLOKDocView = LOK_DOCVIEW(pDocView); + LOKDocView* pLOKDocView = LOK_DOC_VIEW(pDocView); GdkRectangle aArea; - lok_docview_get_visarea(pLOKDocView, &aArea); + lok_doc_view_get_visarea(pLOKDocView, &aArea); aTree.put(boost::property_tree::ptree::path_type("SearchItem.SearchStartPointX/type", '/'), "long"); aTree.put(boost::property_tree::ptree::path_type("SearchItem.SearchStartPointX/value", '/'), aArea.x); aTree.put(boost::property_tree::ptree::path_type("SearchItem.SearchStartPointY/type", '/'), "long"); @@ -170,7 +170,7 @@ static void doSearch(bool bBackwards) std::stringstream aStream; boost::property_tree::write_json(aStream, aTree); - lok_docview_post_command(pLOKDocView, ".uno:ExecuteSearch", aStream.str().c_str()); + lok_doc_view_post_command(pLOKDocView, ".uno:ExecuteSearch", aStream.str().c_str()); } /// Click handler for the search next button. @@ -210,8 +210,8 @@ static gboolean signalFindbar(GtkWidget* /*pWidget*/, GdkEventKey* pEvent, gpoin /// LOKDocView changed edit state -> inform the tool button. static void signalEdit(LOKDocView* pLOKDocView, gboolean bWasEdit, gpointer /*pData*/) { - gboolean bEdit = lok_docview_get_edit(pLOKDocView); - g_info("signalEdit: %d -> %d", bWasEdit, lok_docview_get_edit(pLOKDocView)); + gboolean bEdit = lok_doc_view_get_edit(pLOKDocView); + g_info("signalEdit: %d -> %d", bWasEdit, lok_doc_view_get_edit(pLOKDocView)); if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(pEnableEditing)) != bEdit) gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(pEnableEditing), bEdit); } @@ -233,7 +233,7 @@ static void signalCommand(LOKDocView* /*pLOKDocView*/, char* pPayload, gpointer gboolean bEdit = aValue == "true"; if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(pItem)) != bEdit) { - // Avoid invoking lok_docview_post_command(). + // Avoid invoking lok_doc_view_post_command(). g_bToolItemBroadcast = false; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(pItem), bEdit); g_bToolItemBroadcast = true; @@ -262,11 +262,11 @@ static void toggleToolItem(GtkWidget* pWidget, gpointer /*pData*/) { if (g_bToolItemBroadcast) { - LOKDocView* pLOKDocView = LOK_DOCVIEW(pDocView); + LOKDocView* pLOKDocView = LOK_DOC_VIEW(pDocView); GtkToolItem* pItem = GTK_TOOL_ITEM(pWidget); const std::string& rString = g_aToolItemCommandNames[pItem]; - g_info("toggleToolItem: lok_docview_post_command('%s')", rString.c_str()); - lok_docview_post_command(pLOKDocView, rString.c_str(), 0); + g_info("toggleToolItem: lok_doc_view_post_command('%s')", rString.c_str()); + lok_doc_view_post_command(pLOKDocView, rString.c_str(), 0); } } @@ -286,10 +286,10 @@ static void populatePartSelector() const int nMaxLength = 50; char sText[nMaxLength]; - int nParts = lok_docview_get_parts( LOK_DOCVIEW(pDocView) ); + int nParts = lok_doc_view_get_parts( LOK_DOC_VIEW(pDocView) ); for ( int i = 0; i < nParts; i++ ) { - char* pName = lok_docview_get_part_name( LOK_DOCVIEW(pDocView), i ); + char* pName = lok_doc_view_get_part_name( LOK_DOC_VIEW(pDocView), i ); assert( pName ); snprintf( sText, nMaxLength, "%i (%s)", i+1, pName ); free( pName ); @@ -297,7 +297,7 @@ static void populatePartSelector() gtk_combo_box_text_append_text( pPartSelector, sText ); } gtk_combo_box_set_active( GTK_COMBO_BOX(pPartSelector), - lok_docview_get_part( LOK_DOCVIEW(pDocView) ) ); + lok_doc_view_get_part( LOK_DOC_VIEW(pDocView) ) ); } static void changePart( GtkWidget* pSelector, gpointer /* pItem */ ) @@ -306,7 +306,7 @@ static void changePart( GtkWidget* pSelector, gpointer /* pItem */ ) if (g_bPartSelectorBroadcast && pDocView) { - lok_docview_set_part( LOK_DOCVIEW(pDocView), nPart ); + lok_doc_view_set_part( LOK_DOC_VIEW(pDocView), nPart ); } } @@ -326,7 +326,7 @@ static void changePartMode( GtkWidget* pSelector, gpointer /* pItem */ ) if ( pDocView ) { - lok_docview_set_partmode( LOK_DOCVIEW(pDocView), ePartMode ); + lok_doc_view_set_partmode( LOK_DOC_VIEW(pDocView), ePartMode ); } } #endif @@ -451,7 +451,7 @@ int main( int argc, char* argv[] ) gtk_box_pack_end(GTK_BOX(pVBox), pFindbar, FALSE, FALSE, 0); // Docview - pDocView = lok_docview_new( pOffice ); + pDocView = lok_doc_view_new( pOffice ); g_signal_connect(pDocView, "edit-changed", G_CALLBACK(signalEdit), NULL); g_signal_connect(pDocView, "command-changed", G_CALLBACK(signalCommand), NULL); g_signal_connect(pDocView, "search-not-found", G_CALLBACK(signalSearch), NULL); @@ -467,10 +467,10 @@ int main( int argc, char* argv[] ) // Hide the findbar by default. gtk_widget_hide(pFindbar); - int bOpened = lok_docview_open_document( LOK_DOCVIEW(pDocView), argv[2] ); + int bOpened = lok_doc_view_open_document( LOK_DOC_VIEW(pDocView), argv[2] ); if (!bOpened) - g_error("main: lok_docview_open_document() failed with '%s'", pOffice->pClass->getError(pOffice)); - assert(lok_docview_get_document(LOK_DOCVIEW(pDocView))); + g_error("main: lok_doc_view_open_document() failed with '%s'", pOffice->pClass->getError(pOffice)); + assert(lok_doc_view_get_document(LOK_DOC_VIEW(pDocView))); // GtkComboBox requires gtk 2.24 or later #if ( GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION >= 24 ) || GTK_MAJOR_VERSION > 2 diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index 53dff28..d34488a 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -123,7 +123,7 @@ struct LOKDocView_Impl bool m_bInDragGraphicHandles[8]; ///@} - /// Callback data, allocated in lok_docview_callback_worker(), released in lok_docview_callback(). + /// Callback data, allocated in lok_doc_view_callback_worker(), released in lok_doc_view_callback(). struct CallbackData { int m_nType; @@ -305,7 +305,7 @@ void LOKDocView_Impl::destroy(LOKDocView* pDocView, gpointer /*pData*/) void LOKDocView_Impl::on_exposed(GtkWidget* /*widget*/, GdkEvent* /*event*/, gpointer userdata) { - LOKDocView *pDocView = LOK_DOCVIEW (userdata); + LOKDocView *pDocView = LOK_DOC_VIEW (userdata); pDocView->m_pImpl->renderDocument(0); } @@ -461,7 +461,7 @@ gboolean LOKDocView_Impl::signalButtonImpl(GdkEventButton* pEvent) } if (!m_bEdit) - lok_docview_set_edit(m_pDocView, TRUE); + lok_doc_view_set_edit(m_pDocView, TRUE); switch (pEvent->type) { @@ -782,7 +782,7 @@ gboolean LOKDocView_Impl::handleTimeoutImpl() void LOKDocView_Impl::renderDocument(GdkRectangle* pPartial) { GdkRectangle visibleArea; - lok_docview_get_visarea (m_pDocView, &visibleArea); + lok_doc_view_get_visarea (m_pDocView, &visibleArea); long nDocumentWidthPixels = twipToPixel(m_nDocumentWidthTwips, m_fZoom); long nDocumentHeightPixels = twipToPixel(m_nDocumentHeightTwips, m_fZoom); @@ -1058,7 +1058,7 @@ void LOKDocView_Impl::globalCallbackWorker(int nType, const char* pPayload, void void LOKDocView_Impl::callbackWorkerImpl(int nType, const char* pPayload) { LOKDocView_Impl::CallbackData* pCallback = new LOKDocView_Impl::CallbackData(nType, pPayload ? pPayload : "(nil)", m_pDocView); - g_info("lok_docview_callback_worker: %s, '%s'", LOKDocView_Impl::callbackTypeToString(nType), pPayload); + g_info("lok_doc_view_callback_worker: %s, '%s'", LOKDocView_Impl::callbackTypeToString(nType), pPayload); #if GTK_CHECK_VERSION(2,12,0) gdk_threads_add_idle(LOKDocView_Impl::callback, pCallback); #endif @@ -1082,30 +1082,30 @@ enum LAST_SIGNAL }; -static guint docview_signals[LAST_SIGNAL] = { 0 }; +static guint doc_view_signals[LAST_SIGNAL] = { 0 }; void LOKDocView_Impl::commandChanged(const std::string& rString) { - g_signal_emit(m_pDocView, docview_signals[COMMAND_CHANGED], 0, rString.c_str()); + g_signal_emit(m_pDocView, doc_view_signals[COMMAND_CHANGED], 0, rString.c_str()); } void LOKDocView_Impl::searchNotFound(const std::string& rString) { - g_signal_emit(m_pDocView, docview_signals[SEARCH_NOT_FOUND], 0, rString.c_str()); + g_signal_emit(m_pDocView, doc_view_signals[SEARCH_NOT_FOUND], 0, rString.c_str()); } void LOKDocView_Impl::setPart(const std::string& rString) { - g_signal_emit(m_pDocView, docview_signals[PART_CHANGED], 0, std::stoi(rString)); + g_signal_emit(m_pDocView, doc_view_signals[PART_CHANGED], 0, std::stoi(rString)); renderDocument(0); } -static void lok_docview_class_init( gpointer ptr ) +static void lok_doc_view_class_init( gpointer ptr ) { LOKDocViewClass* pClass = static_cast<LOKDocViewClass *>(ptr); GObjectClass *gobject_class = G_OBJECT_CLASS(pClass); pClass->edit_changed = NULL; - docview_signals[EDIT_CHANGED] = + doc_view_signals[EDIT_CHANGED] = g_signal_new("edit-changed", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_FIRST, @@ -1115,7 +1115,7 @@ static void lok_docview_class_init( gpointer ptr ) G_TYPE_NONE, 1, G_TYPE_BOOLEAN); pClass->command_changed = NULL; - docview_signals[COMMAND_CHANGED] = + doc_view_signals[COMMAND_CHANGED] = g_signal_new("command-changed", G_TYPE_FROM_CLASS(gobject_class), G_SIGNAL_RUN_FIRST, @@ -1125,7 +1125,7 @@ static void lok_docview_class_init( gpointer ptr ) G_TYPE_NONE, 1, G_TYPE_STRING); pClass->search_not_found = 0; - docview_signals[SEARCH_NOT_FOUND] = + doc_view_signals[SEARCH_NOT_FOUND] = g_signal_new("search-not-found", G_TYPE_FROM_CLASS(gobject_class), G_SIGNAL_RUN_FIRST, @@ -1135,7 +1135,7 @@ static void lok_docview_class_init( gpointer ptr ) G_TYPE_NONE, 1, G_TYPE_STRING); pClass->part_changed = 0; - docview_signals[PART_CHANGED] = + doc_view_signals[PART_CHANGED] = g_signal_new("part-changed", G_TYPE_FROM_CLASS(gobject_class), G_SIGNAL_RUN_FIRST, @@ -1146,7 +1146,7 @@ static void lok_docview_class_init( gpointer ptr ) G_TYPE_INT); } -static void lok_docview_init( GTypeInstance* pInstance, gpointer ) +static void lok_doc_view_init( GTypeInstance* pInstance, gpointer ) { LOKDocView* pDocView = reinterpret_cast<LOKDocView *>(pInstance); // Gtk ScrolledWindow is apparently not fully initialised yet, we specifically @@ -1183,38 +1183,38 @@ static void lok_docview_init( GTypeInstance* pInstance, gpointer ) g_signal_connect(G_OBJECT(pDocView), "destroy", G_CALLBACK(LOKDocView_Impl::destroy), 0); } -SAL_DLLPUBLIC_EXPORT guint lok_docview_get_type() +SAL_DLLPUBLIC_EXPORT guint lok_doc_view_get_type() { - static guint lok_docview_type = 0; + static guint lok_doc_view_type = 0; - if (!lok_docview_type) + if (!lok_doc_view_type) { char pName[] = "LokDocView"; - GtkTypeInfo lok_docview_info = + GtkTypeInfo lok_doc_view_info = { pName, sizeof( LOKDocView ), sizeof( LOKDocViewClass ), - lok_docview_class_init, - lok_docview_init, + lok_doc_view_class_init, + lok_doc_view_init, NULL, NULL, (GtkClassInitFunc) NULL }; - lok_docview_type = gtk_type_unique( gtk_scrolled_window_get_type(), &lok_docview_info ); + lok_doc_view_type = gtk_type_unique( gtk_scrolled_window_get_type(), &lok_doc_view_info ); } - return lok_docview_type; + return lok_doc_view_type; } -SAL_DLLPUBLIC_EXPORT GtkWidget* lok_docview_new( LibreOfficeKit* pOffice ) +SAL_DLLPUBLIC_EXPORT GtkWidget* lok_doc_view_new( LibreOfficeKit* pOffice ) { - LOKDocView* pDocView = LOK_DOCVIEW(gtk_type_new(lok_docview_get_type())); + LOKDocView* pDocView = LOK_DOC_VIEW(gtk_type_new(lok_doc_view_get_type())); pDocView->m_pImpl->m_pOffice = pOffice; return GTK_WIDGET( pDocView ); } -SAL_DLLPUBLIC_EXPORT gboolean lok_docview_open_document( LOKDocView* pDocView, char* pPath ) +SAL_DLLPUBLIC_EXPORT gboolean lok_doc_view_open_document( LOKDocView* pDocView, char* pPath ) { if ( pDocView->m_pImpl->m_pDocument ) { @@ -1260,12 +1260,12 @@ SAL_DLLPUBLIC_EXPORT gboolean lok_docview_open_document( LOKDocView* pDocView, c return TRUE; } -SAL_DLLPUBLIC_EXPORT LibreOfficeKitDocument* lok_docview_get_document(LOKDocView* pDocView) +SAL_DLLPUBLIC_EXPORT LibreOfficeKitDocument* lok_doc_view_get_document(LOKDocView* pDocView) { return pDocView->m_pImpl->m_pDocument; } -SAL_DLLPUBLIC_EXPORT void lok_docview_set_zoom ( LOKDocView* pDocView, float fZoom ) +SAL_DLLPUBLIC_EXPORT void lok_doc_view_set_zoom ( LOKDocView* pDocView, float fZoom ) { pDocView->m_pImpl->m_fZoom = fZoom; long nDocumentWidthPixels = twipToPixel(pDocView->m_pImpl->m_nDocumentWidthTwips, fZoom); @@ -1283,72 +1283,72 @@ SAL_DLLPUBLIC_EXPORT void lok_docview_set_zoom ( LOKDocView* pDocView, float fZo pDocView->m_pImpl->renderDocument(0); } -SAL_DLLPUBLIC_EXPORT float lok_docview_get_zoom ( LOKDocView* pDocView ) +SAL_DLLPUBLIC_EXPORT float lok_doc_view_get_zoom ( LOKDocView* pDocView ) { return pDocView->m_pImpl->m_fZoom; } -SAL_DLLPUBLIC_EXPORT int lok_docview_get_parts( LOKDocView* pDocView ) +SAL_DLLPUBLIC_EXPORT int lok_doc_view_get_parts( LOKDocView* pDocView ) { return pDocView->m_pImpl->m_pDocument->pClass->getParts( pDocView->m_pImpl->m_pDocument ); } -SAL_DLLPUBLIC_EXPORT int lok_docview_get_part( LOKDocView* pDocView ) +SAL_DLLPUBLIC_EXPORT int lok_doc_view_get_part( LOKDocView* pDocView ) { return pDocView->m_pImpl->m_pDocument->pClass->getPart( pDocView->m_pImpl->m_pDocument ); } -SAL_DLLPUBLIC_EXPORT void lok_docview_set_part( LOKDocView* pDocView, int nPart) +SAL_DLLPUBLIC_EXPORT void lok_doc_view_set_part( LOKDocView* pDocView, int nPart) { pDocView->m_pImpl->m_pDocument->pClass->setPart( pDocView->m_pImpl->m_pDocument, nPart ); } -SAL_DLLPUBLIC_EXPORT char* lok_docview_get_part_name( LOKDocView* pDocView, int nPart ) +SAL_DLLPUBLIC_EXPORT char* lok_doc_view_get_part_name( LOKDocView* pDocView, int nPart ) { return pDocView->m_pImpl->m_pDocument->pClass->getPartName( pDocView->m_pImpl->m_pDocument, nPart ); } -SAL_DLLPUBLIC_EXPORT void lok_docview_set_partmode( LOKDocView* pDocView, +SAL_DLLPUBLIC_EXPORT void lok_doc_view_set_partmode( LOKDocView* pDocView, int nPartMode ) { pDocView->m_pImpl->m_pDocument->pClass->setPartMode( pDocView->m_pImpl->m_pDocument, nPartMode ); pDocView->m_pImpl->renderDocument(0); } -SAL_DLLPUBLIC_EXPORT void lok_docview_set_edit( LOKDocView* pDocView, +SAL_DLLPUBLIC_EXPORT void lok_doc_view_set_edit( LOKDocView* pDocView, gboolean bEdit ) { gboolean bWasEdit = pDocView->m_pImpl->m_bEdit; if (!pDocView->m_pImpl->m_bEdit && bEdit) - g_info("lok_docview_set_edit: entering edit mode"); + g_info("lok_doc_view_set_edit: entering edit mode"); else if (pDocView->m_pImpl->m_bEdit && !bEdit) { - g_info("lok_docview_set_edit: leaving edit mode"); + g_info("lok_doc_view_set_edit: leaving edit mode"); pDocView->m_pImpl->m_pDocument->pClass->resetSelection(pDocView->m_pImpl->m_pDocument); } pDocView->m_pImpl->m_bEdit = bEdit; - g_signal_emit(pDocView, docview_signals[EDIT_CHANGED], 0, bWasEdit); + g_signal_emit(pDocView, doc_view_signals[EDIT_CHANGED], 0, bWasEdit); gtk_widget_queue_draw(GTK_WIDGET(pDocView->m_pImpl->m_pDrawingArea)); } -SAL_DLLPUBLIC_EXPORT gboolean lok_docview_get_edit(LOKDocView* pDocView) +SAL_DLLPUBLIC_EXPORT gboolean lok_doc_view_get_edit(LOKDocView* pDocView) { return pDocView->m_pImpl->m_bEdit; } -SAL_DLLPUBLIC_EXPORT void lok_docview_post_command(LOKDocView* pDocView, const char* pCommand, const char* pArguments) +SAL_DLLPUBLIC_EXPORT void lok_doc_view_post_command(LOKDocView* pDocView, const char* pCommand, const char* pArguments) { pDocView->m_pImpl->m_pDocument->pClass->postUnoCommand(pDocView->m_pImpl->m_pDocument, pCommand, pArguments); } -SAL_DLLPUBLIC_EXPORT void lok_docview_post_key(GtkWidget* /*pWidget*/, GdkEventKey* pEvent, gpointer pData) +SAL_DLLPUBLIC_EXPORT void lok_doc_view_post_key(GtkWidget* /*pWidget*/, GdkEventKey* pEvent, gpointer pData) { LOKDocView* pDocView = static_cast<LOKDocView *>(pData); pDocView->m_pImpl->signalKey(pEvent); } -SAL_DLLPUBLIC_EXPORT void lok_docview_get_visarea(LOKDocView* pThis, GdkRectangle* pArea) +SAL_DLLPUBLIC_EXPORT void lok_doc_view_get_visarea(LOKDocView* pThis, GdkRectangle* pArea) { float zoom = pThis->m_pImpl->m_fZoom; GtkAdjustment* pHAdjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(pThis)); commit 08f5b55132565f604b5705f19066cecb3e4de9f8 Author: Pranav Kant <pran...@gnome.org> Date: Sat Jun 6 02:07:31 2015 +0530 lokdocview: Let G_BEGIN/END_DECLS handle the compiler check Change-Id: I8c60c9ba13516fc2b3a926c19b41ee19805d74a5 diff --git a/include/LibreOfficeKit/LibreOfficeKitGtk.h b/include/LibreOfficeKit/LibreOfficeKitGtk.h index b3e50d3..9668904 100644 --- a/include/LibreOfficeKit/LibreOfficeKitGtk.h +++ b/include/LibreOfficeKit/LibreOfficeKitGtk.h @@ -16,10 +16,7 @@ #define LOK_USE_UNSTABLE_API #include <LibreOfficeKit/LibreOfficeKit.h> -#ifdef __cplusplus -extern "C" -{ -#endif +G_BEGIN_DECLS #define LOK_DOCVIEW(obj) GTK_CHECK_CAST (obj, lok_docview_get_type(), LOKDocView) #define LOK_DOCVIEW_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, lok_docview_get_type(), LOKDocViewClass) @@ -77,9 +74,8 @@ void lok_docview_post_key (GtkWidget* pWidget, GdkEventKey* pEvent /// Get the visible area of the document (in twips). void lok_docview_get_visarea(LOKDocView* pThis, GdkRectangle* pArea); -#ifdef __cplusplus -} -#endif + +G_END_DECLS #endif // INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITGTK_H commit f18cfaa028c11d0a59b8adabdc1e4174e73cfedf Author: Pranav Kant <pran...@gnome.org> Date: Sat Jun 6 00:36:54 2015 +0530 lokdocview: fix render calls after LOK callbacks Change-Id: Ib33f0e1dcf257350be1e2cf6c49cd92494472a55 diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index 137eb0e..53dff28 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -949,21 +949,18 @@ gboolean LOKDocView_Impl::callbackImpl(CallbackData* pCallback) { GdkRectangle aRectangle = LOKDocView_Impl::payloadToRectangle(pCallback->m_aPayload.c_str()); setTilesInvalid(aRectangle); - renderDocument(0); } else - { m_pTileBuffer->resetAllTiles(); - renderDocument(0); - } + + gtk_widget_queue_draw(m_pDrawingArea); } break; case LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR: { m_aVisibleCursor = LOKDocView_Impl::payloadToRectangle(pCallback->m_aPayload.c_str()); m_bCursorOverlayVisible = true; - setTilesInvalid(m_aVisibleCursor); - renderDocument(0); + gtk_widget_queue_draw(m_pDrawingArea); } break; case LOK_CALLBACK_TEXT_SELECTION: @@ -1030,7 +1027,6 @@ gboolean LOKDocView_Impl::callbackImpl(CallbackData* pCallback) gtk_widget_set_size_request(m_pDrawingArea, twipToPixel(m_nDocumentWidthTwips, m_fZoom), twipToPixel(m_nDocumentHeightTwips, m_fZoom)); - m_pTileBuffer->resetAllTiles(); } break; case LOK_CALLBACK_SET_PART: commit 89b388fccddc1cd4496d70959153fbd5d4954a7d Author: Pranav Kant <pran...@gnome.org> Date: Fri Jun 5 20:38:55 2015 +0530 lokdocview: move GtkDrawingArea size request out of renderDocument() ... and place it at places only where the widget can change its size. Change-Id: I4a4b28b35eba06a6faab434677d4d70d2a33339a diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index b70335a..137eb0e 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -790,7 +790,6 @@ void LOKDocView_Impl::renderDocument(GdkRectangle* pPartial) guint nRows = ceil((double)nDocumentHeightPixels / nTileSizePixels); guint nColumns = ceil((double)nDocumentWidthPixels / nTileSizePixels); - gtk_widget_set_size_request(m_pDrawingArea, nDocumentWidthPixels, nDocumentHeightPixels); cairo_t *pcairo = gdk_cairo_create(m_pDrawingArea->window); // Render the tiles. @@ -826,7 +825,7 @@ void LOKDocView_Impl::renderDocument(GdkRectangle* pPartial) if (bPaint) { - g_info("tile_buffer_get_tile (%d, %d)", nRow, nColumn); + //g_info("tile_buffer_get_tile (%d, %d)", nRow, nColumn); Tile& currentTile = m_pTileBuffer->getTile(nRow, nColumn); GdkPixbuf* pPixBuf = currentTile.getBuffer(); @@ -1028,6 +1027,10 @@ gboolean LOKDocView_Impl::callbackImpl(CallbackData* pCallback) case LOK_CALLBACK_DOCUMENT_SIZE_CHANGED: { payloadToSize(pCallback->m_aPayload.c_str(), m_nDocumentWidthTwips, m_nDocumentHeightTwips); + gtk_widget_set_size_request(m_pDrawingArea, + twipToPixel(m_nDocumentWidthTwips, m_fZoom), + twipToPixel(m_nDocumentHeightTwips, m_fZoom)); + m_pTileBuffer->resetAllTiles(); } break; case LOK_CALLBACK_SET_PART: @@ -1252,6 +1255,9 @@ SAL_DLLPUBLIC_EXPORT gboolean lok_docview_open_document( LOKDocView* pDocView, c nTileSizePixels, nRows, nColumns); + gtk_widget_set_size_request(pDocView->m_pImpl->m_pDrawingArea, + nDocumentWidthPixels, + nDocumentHeightPixels); pDocView->m_pImpl->renderDocument(0); } @@ -1273,6 +1279,9 @@ SAL_DLLPUBLIC_EXPORT void lok_docview_set_zoom ( LOKDocView* pDocView, float fZo guint nColumns = ceil((double)nDocumentWidthPixels / nTileSizePixels); pDocView->m_pImpl->m_pTileBuffer->setZoom(fZoom, nRows, nColumns); + gtk_widget_set_size_request(pDocView->m_pImpl->m_pDrawingArea, + nDocumentWidthPixels, + nDocumentHeightPixels); if ( pDocView->m_pImpl->m_pDocument ) pDocView->m_pImpl->renderDocument(0); commit 3f668f0656f40a995d0713932dbb3c4b774a108b Author: Pranav Kant <pran...@gnome.org> Date: Fri Jun 5 17:06:54 2015 +0530 lokdocview: check payload for inconsistencies before using it Lets follow the old advice: "Be liberal in what you accept, be strict in what you produce". This is after noticing negative values for x, y in the payload in some situation, such as, hitting a backspace key when the cursor is at the start of a line Change-Id: I11939b981f75969b88214baee66b4c69c5e41906 diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index d538bb6..b70335a 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -187,9 +187,9 @@ struct LOKDocView_Impl */ void renderDocument(GdkRectangle* pPartial); /// Returns the GdkRectangle of a x,y,width,height string. - static GdkRectangle payloadToRectangle(const char* pPayload); + GdkRectangle payloadToRectangle(const char* pPayload); /// Returns the GdkRectangles of a x1,y1,w1,h1;x2,y2,w2,h2;... string. - static std::vector<GdkRectangle> payloadToRectangles(const char* pPayload); + std::vector<GdkRectangle> payloadToRectangles(const char* pPayload); /// Returns the string representation of a LibreOfficeKitCallbackType enumeration element. static const char* callbackTypeToString(int nType); /// Invoked on the main thread if callbackWorker() requests so. @@ -853,18 +853,26 @@ GdkRectangle LOKDocView_Impl::payloadToRectangle(const char* pPayload) if (!*ppCoordinate) return aRet; aRet.x = atoi(*ppCoordinate); + if (aRet.x < 0) + aRet.x = 0; ++ppCoordinate; if (!*ppCoordinate) return aRet; aRet.y = atoi(*ppCoordinate); + if (aRet.y < 0) + aRet.y = 0; ++ppCoordinate; if (!*ppCoordinate) return aRet; aRet.width = atoi(*ppCoordinate); + if (aRet.x + aRet.width > m_nDocumentWidthTwips) + aRet.width = m_nDocumentWidthTwips - aRet.x; ++ppCoordinate; if (!*ppCoordinate) return aRet; aRet.height = atoi(*ppCoordinate); + if (aRet.y + aRet.height > m_nDocumentHeightTwips) + aRet.height = m_nDocumentHeightTwips - aRet.y; g_strfreev(ppCoordinates); return aRet; } commit 73d580f7575c4e0795911f8e19e418003339db62 Author: Pranav Kant <pran...@gnome.org> Date: Fri Jun 5 17:05:28 2015 +0530 lokdocview: fixed rectangle format in documentation/comments Change-Id: Iaf4a5fba5c4c34d03b91ca9ca4dd4eff1dbf39f6 diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index 5e90ca9..d538bb6 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -186,9 +186,9 @@ struct LOKDocView_Impl * the tiles that intersect with pPartial. */ void renderDocument(GdkRectangle* pPartial); - /// Returns the GdkRectangle of a width,height,x,y string. + /// Returns the GdkRectangle of a x,y,width,height string. static GdkRectangle payloadToRectangle(const char* pPayload); - /// Returns the GdkRectangles of a w,h,x,y;w2,h2,x2,y2;... string. + /// Returns the GdkRectangles of a x1,y1,w1,h1;x2,y2,w2,h2;... string. static std::vector<GdkRectangle> payloadToRectangles(const char* pPayload); /// Returns the string representation of a LibreOfficeKitCallbackType enumeration element. static const char* callbackTypeToString(int nType); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits