Blame SOURCES/0130-gtktiledviewer-allow-part-selector-in-multiple-windo.patch

f325b2
From 81d430bc619caa24366cc35de67d34c5017acfcb Mon Sep 17 00:00:00 2001
f325b2
From: Miklos Vajna <vmiklos@collabora.co.uk>
f325b2
Date: Tue, 15 Sep 2015 12:45:58 +0200
f325b2
Subject: [PATCH 130/398] gtktiledviewer: allow part selector in multiple
f325b2
 windows
f325b2
f325b2
Change-Id: Ib31fca3d8b4119704fb1a5c3cee885e7c239c247
f325b2
(cherry picked from commit d8bf31e129c4e791bfb02c8d0ccbaedb53d9b300)
f325b2
---
f325b2
 .../qa/gtktiledviewer/gtktiledviewer.cxx           | 65 ++++++++++++----------
f325b2
 1 file changed, 36 insertions(+), 29 deletions(-)
f325b2
f325b2
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
f325b2
index ef3aee008cae..3e72c13470a8 100644
f325b2
--- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
f325b2
+++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
f325b2
@@ -30,11 +30,6 @@ static int help()
f325b2
     return 1;
f325b2
 }
f325b2
 
f325b2
-static GtkWidget* pVBox;
f325b2
-static GtkComboBoxText* pPartSelector;
f325b2
-static GtkWidget* pPartModeComboBox;
f325b2
-/// Should the part selector avoid calling lok::Document::setPart()?
f325b2
-static bool g_bPartSelectorBroadcast = true;
f325b2
 static GtkWidget* pFindbar;
f325b2
 static GtkWidget* pFindbarEntry;
f325b2
 static GtkWidget* pFindbarLabel;
f325b2
@@ -54,6 +49,11 @@ public:
f325b2
     std::map<GtkToolItem*, std::string> m_aToolItemCommandNames;
f325b2
     std::map<std::string, GtkToolItem*> m_aCommandNameToolItems;
f325b2
     bool m_bToolItemBroadcast;
f325b2
+    GtkWidget* m_pVBox;
f325b2
+    GtkComboBoxText* m_pPartSelector;
f325b2
+    GtkWidget* m_pPartModeComboBox;
f325b2
+    /// Should the part selector avoid calling lok::Document::setPart()?
f325b2
+    bool m_bPartSelectorBroadcast;
f325b2
 
f325b2
     TiledWindow()
f325b2
         : m_pDocView(0),
f325b2
@@ -64,7 +64,11 @@ public:
f325b2
         m_pUnderline(0),
f325b2
         m_pStrikethrough(0),
f325b2
         m_pScrolledWindow(0),
f325b2
-        m_bToolItemBroadcast(true)
f325b2
+        m_bToolItemBroadcast(true),
f325b2
+        m_pVBox(0),
f325b2
+        m_pPartSelector(0),
f325b2
+        m_pPartModeComboBox(0),
f325b2
+        m_bPartSelectorBroadcast(true)
f325b2
     {
f325b2
     }
f325b2
 };
f325b2
@@ -352,11 +356,12 @@ static void signalSearch(LOKDocView* /*pLOKDocView*/, char* /*pPayload*/, gpoint
f325b2
 }
f325b2
 
f325b2
 
f325b2
-static void signalPart(LOKDocView* /*pLOKDocView*/, int nPart, gpointer /*pData*/)
f325b2
+static void signalPart(LOKDocView* pLOKDocView, int nPart, gpointer /*pData*/)
f325b2
 {
f325b2
-    g_bPartSelectorBroadcast = false;
f325b2
-    gtk_combo_box_set_active(GTK_COMBO_BOX(pPartSelector), nPart);
f325b2
-    g_bPartSelectorBroadcast = true;
f325b2
+    TiledWindow& rWindow = lcl_getTiledWindow(GTK_WIDGET(pLOKDocView));
f325b2
+    rWindow.m_bPartSelectorBroadcast = false;
f325b2
+    gtk_combo_box_set_active(GTK_COMBO_BOX(rWindow.m_pPartSelector), nPart);
f325b2
+    rWindow.m_bPartSelectorBroadcast = true;
f325b2
 }
f325b2
 
f325b2
 /// User clicked on a command button -> inform LOKDocView.
f325b2
@@ -437,9 +442,10 @@ static void toggleToolItem(GtkWidget* pWidget, gpointer /*pData*/)
f325b2
 
f325b2
 static void populatePartSelector(LOKDocView* pLOKDocView)
f325b2
 {
f325b2
+    TiledWindow& rWindow = lcl_getTiledWindow(GTK_WIDGET(pLOKDocView));
f325b2
     gtk_list_store_clear( GTK_LIST_STORE(
f325b2
                               gtk_combo_box_get_model(
f325b2
-                                  GTK_COMBO_BOX(pPartSelector) )) );
f325b2
+                                  GTK_COMBO_BOX(rWindow.m_pPartSelector) )) );
f325b2
 
f325b2
     if (!pLOKDocView)
f325b2
     {
f325b2
@@ -457,16 +463,17 @@ static void populatePartSelector(LOKDocView* pLOKDocView)
f325b2
         snprintf( sText, nMaxLength, "%i (%s)", i+1, pName );
f325b2
         free( pName );
f325b2
 
f325b2
-        gtk_combo_box_text_append_text( pPartSelector, sText );
f325b2
+        gtk_combo_box_text_append_text( rWindow.m_pPartSelector, sText );
f325b2
     }
f325b2
-    gtk_combo_box_set_active(GTK_COMBO_BOX(pPartSelector), lok_doc_view_get_part(pLOKDocView));
f325b2
+    gtk_combo_box_set_active(GTK_COMBO_BOX(rWindow.m_pPartSelector), lok_doc_view_get_part(pLOKDocView));
f325b2
 }
f325b2
 
f325b2
 static void signalSize(LOKDocView* pLOKDocView, gpointer /*pData*/)
f325b2
 {
f325b2
-    g_bPartSelectorBroadcast = false;
f325b2
+    TiledWindow& rWindow = lcl_getTiledWindow(GTK_WIDGET(pLOKDocView));
f325b2
+    rWindow.m_bPartSelectorBroadcast = false;
f325b2
     populatePartSelector(pLOKDocView);
f325b2
-    g_bPartSelectorBroadcast = true;
f325b2
+    rWindow.m_bPartSelectorBroadcast = true;
f325b2
 }
f325b2
 
f325b2
 static void changePart( GtkWidget* pSelector, gpointer /* pItem */ )
f325b2
@@ -474,7 +481,7 @@ static void changePart( GtkWidget* pSelector, gpointer /* pItem */ )
f325b2
     int nPart = gtk_combo_box_get_active( GTK_COMBO_BOX(pSelector) );
f325b2
     TiledWindow& rWindow = lcl_getTiledWindow(pSelector);
f325b2
 
f325b2
-    if (g_bPartSelectorBroadcast && rWindow.m_pDocView)
f325b2
+    if (rWindow.m_bPartSelectorBroadcast && rWindow.m_pDocView)
f325b2
     {
f325b2
         lok_doc_view_set_part( LOK_DOC_VIEW(rWindow.m_pDocView), nPart );
f325b2
         lok_doc_view_reset_view( LOK_DOC_VIEW(rWindow.m_pDocView) );
f325b2
@@ -523,13 +530,13 @@ static void openDocumentCallback (GObject* source_object, GAsyncResult* res, gpo
f325b2
     }
f325b2
 
f325b2
     populatePartSelector(pDocView);
f325b2
-    populatePartModeSelector( GTK_COMBO_BOX_TEXT(pPartModeComboBox) );
f325b2
+    populatePartModeSelector( GTK_COMBO_BOX_TEXT(rWindow.m_pPartModeComboBox) );
f325b2
     // Connect these signals after populating the selectors, to avoid re-rendering on setting the default part/partmode.
f325b2
-    g_signal_connect(G_OBJECT(pPartModeComboBox), "changed", G_CALLBACK(changePartMode), 0);
f325b2
-    g_signal_connect(G_OBJECT(pPartSelector), "changed", G_CALLBACK(changePart), 0);
f325b2
+    g_signal_connect(G_OBJECT(rWindow.m_pPartModeComboBox), "changed", G_CALLBACK(changePartMode), 0);
f325b2
+    g_signal_connect(G_OBJECT(rWindow.m_pPartSelector), "changed", G_CALLBACK(changePart), 0);
f325b2
 
f325b2
     focusChain = g_list_append( focusChain, pDocView );
f325b2
-    gtk_container_set_focus_chain ( GTK_CONTAINER (pVBox), focusChain );
f325b2
+    gtk_container_set_focus_chain ( GTK_CONTAINER (rWindow.m_pVBox), focusChain );
f325b2
 
f325b2
     gtk_widget_hide(rWindow.m_pStatusBar);
f325b2
 }
f325b2
@@ -554,8 +561,8 @@ int main( int argc, char* argv[] )
f325b2
     gtk_window_set_default_size(GTK_WINDOW(pWindow), 1024, 768);
f325b2
     g_signal_connect( pWindow, "destroy", G_CALLBACK(gtk_main_quit), NULL );
f325b2
 
f325b2
-    pVBox = gtk_box_new( GTK_ORIENTATION_VERTICAL, 0 );
f325b2
-    gtk_container_add( GTK_CONTAINER(pWindow), pVBox );
f325b2
+    aWindow.m_pVBox = gtk_box_new( GTK_ORIENTATION_VERTICAL, 0 );
f325b2
+    gtk_container_add( GTK_CONTAINER(pWindow), aWindow.m_pVBox );
f325b2
 
f325b2
     // Toolbar
f325b2
     GtkWidget* pToolbar = gtk_toolbar_new();
f325b2
@@ -587,14 +594,14 @@ int main( int argc, char* argv[] )
f325b2
     gtk_container_add( GTK_CONTAINER(pPartSelectorToolItem), pComboBox );
f325b2
     gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), pPartSelectorToolItem, -1 );
f325b2
 
f325b2
-    pPartSelector = GTK_COMBO_BOX_TEXT(pComboBox);
f325b2
+    aWindow.m_pPartSelector = GTK_COMBO_BOX_TEXT(pComboBox);
f325b2
 
f325b2
     GtkToolItem* pSeparator2 = gtk_separator_tool_item_new();
f325b2
     gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), pSeparator2, -1);
f325b2
 
f325b2
     GtkToolItem* pPartModeSelectorToolItem = gtk_tool_item_new();
f325b2
-    pPartModeComboBox = gtk_combo_box_text_new();
f325b2
-    gtk_container_add( GTK_CONTAINER(pPartModeSelectorToolItem), pPartModeComboBox );
f325b2
+    aWindow.m_pPartModeComboBox = gtk_combo_box_text_new();
f325b2
+    gtk_container_add(GTK_CONTAINER(pPartModeSelectorToolItem), aWindow.m_pPartModeComboBox);
f325b2
     gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), pPartModeSelectorToolItem, -1 );
f325b2
 
f325b2
     gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), gtk_separator_tool_item_new(), -1);
f325b2
@@ -656,7 +663,7 @@ int main( int argc, char* argv[] )
f325b2
     g_signal_connect(G_OBJECT(aWindow.m_pStrikethrough), "toggled", G_CALLBACK(toggleToolItem), NULL);
f325b2
     lcl_registerToolItem(aWindow, aWindow.m_pStrikethrough, ".uno:Strikeout");
f325b2
 
f325b2
-    gtk_box_pack_start( GTK_BOX(pVBox), pToolbar, FALSE, FALSE, 0 ); // Adds to top.
f325b2
+    gtk_box_pack_start( GTK_BOX(aWindow.m_pVBox), pToolbar, FALSE, FALSE, 0 ); // Adds to top.
f325b2
 
f325b2
     // Findbar
f325b2
     pFindbar = gtk_toolbar_new();
f325b2
@@ -688,7 +695,7 @@ int main( int argc, char* argv[] )
f325b2
     gtk_container_add(GTK_CONTAINER(pFindbarLabelContainer), pFindbarLabel);
f325b2
     gtk_toolbar_insert(GTK_TOOLBAR(pFindbar), pFindbarLabelContainer, -1);
f325b2
 
f325b2
-    gtk_box_pack_end(GTK_BOX(pVBox), pFindbar, FALSE, FALSE, 0);
f325b2
+    gtk_box_pack_end(GTK_BOX(aWindow.m_pVBox), pFindbar, FALSE, FALSE, 0);
f325b2
 
f325b2
     // Docview
f325b2
     GtkWidget* pDocView = lok_doc_view_new (argv[1], NULL, NULL);
f325b2
@@ -710,7 +717,7 @@ int main( int argc, char* argv[] )
f325b2
     aWindow.m_pScrolledWindow = gtk_scrolled_window_new(0, 0);
f325b2
     gtk_widget_set_hexpand (aWindow.m_pScrolledWindow, TRUE);
f325b2
     gtk_widget_set_vexpand (aWindow.m_pScrolledWindow, TRUE);
f325b2
-    gtk_container_add(GTK_CONTAINER(pVBox), aWindow.m_pScrolledWindow);
f325b2
+    gtk_container_add(GTK_CONTAINER(aWindow.m_pVBox), aWindow.m_pScrolledWindow);
f325b2
 
f325b2
     gtk_container_add(GTK_CONTAINER(aWindow.m_pScrolledWindow), pDocView);
f325b2
 
f325b2
@@ -720,7 +727,7 @@ int main( int argc, char* argv[] )
f325b2
     GtkWidget* pStatusBar = gtk_statusbar_new ();
f325b2
     aWindow.m_pStatusBar = pStatusBar;
f325b2
     gtk_container_forall(GTK_CONTAINER(pStatusBar), removeChildrenFromStatusbar, pStatusBar);
f325b2
-    gtk_container_add (GTK_CONTAINER(pVBox), pStatusBar);
f325b2
+    gtk_container_add (GTK_CONTAINER(aWindow.m_pVBox), pStatusBar);
f325b2
     gtk_container_add (GTK_CONTAINER(pStatusBar), pProgressBar);
f325b2
     gtk_widget_set_hexpand(pProgressBar, true);
f325b2
 
f325b2
-- 
f325b2
2.12.0
f325b2