From b4dda1d4bda439d063493d2c6726071f54fc4c55 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Wed, 16 Sep 2015 09:22:17 +0200 Subject: [PATCH 138/398] gtktiledviewer: add setupWidgetAndCreateWindow() to avoid copy&paste Change-Id: Ibbbaaa1c148cfd4578ad37e0f99b62ab885a1a83 (cherry picked from commit 855e1bac1d5155352706c7d849942f5dc453c67d) --- .../qa/gtktiledviewer/gtktiledviewer.cxx | 33 +++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx index e32397b133c9..5a18aee50bf3 100644 --- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx @@ -79,6 +79,7 @@ static std::map g_aWindows; static void setupDocView(GtkWidget* pDocView); static GtkWidget* createWindow(TiledWindow& rWindow); +static void openDocumentCallback (GObject* source_object, GAsyncResult* res, gpointer userdata); static TiledWindow& lcl_getTiledWindow(GtkWidget* pWidget) { @@ -192,17 +193,34 @@ static void toggleFindbar(GtkWidget* pButton, gpointer /*pItem*/) } } -/// Calls lok::Document::createView(). -static void createView(GtkWidget* pButton, gpointer /*pItem*/) +/// Common initialization, regardless if it's just a new view or a full init. +static void setupWidgetAndCreateWindow(GtkWidget* pDocView) { - TiledWindow& rWindow = lcl_getTiledWindow(pButton); - GtkWidget* pDocView = lok_doc_view_new_from_widget(LOK_DOC_VIEW(rWindow.m_pDocView)); setupDocView(pDocView); TiledWindow aWindow; aWindow.m_pDocView = pDocView; createWindow(aWindow); } +/// Creates a new view, i.e. no LOK init or document load. +static void createView(GtkWidget* pButton, gpointer /*pItem*/) +{ + TiledWindow& rWindow = lcl_getTiledWindow(pButton); + GtkWidget* pDocView = lok_doc_view_new_from_widget(LOK_DOC_VIEW(rWindow.m_pDocView)); + + setupWidgetAndCreateWindow(pDocView); +} + +/// Creates a new model, i.e. LOK init and document load, one view implicitly. +static void createModelAndView(const char* pLOPath, const char* pDocPath) +{ + GtkWidget* pDocView = lok_doc_view_new(pLOPath, 0, 0); + + setupWidgetAndCreateWindow(pDocView); + + lok_doc_view_open_document(LOK_DOC_VIEW(pDocView), pDocPath, 0, openDocumentCallback, pDocView); +} + /// Our GtkClipboardGetFunc implementation for HTML. static void htmlGetFunc(GtkClipboard* /*pClipboard*/, GtkSelectionData* pSelectionData, guint /*info*/, gpointer pUserData) { @@ -750,12 +768,7 @@ int main( int argc, char* argv[] ) gtk_init( &argc, &argv ); - GtkWidget* pDocView = lok_doc_view_new(argv[1], NULL, NULL); - setupDocView(pDocView); - TiledWindow aWindow; - aWindow.m_pDocView = pDocView; - createWindow(aWindow); - lok_doc_view_open_document(LOK_DOC_VIEW(pDocView), argv[2], NULL, openDocumentCallback, pDocView); + createModelAndView(argv[1], argv[2]); gtk_main(); -- 2.12.0