Blame SOURCES/0128-gtktiledviwer-allow-GtkToolItems-in-multiple-windows.patch

f325b2
From cc49e8fbf166ddea4944d1a5330f9d8442bee2e1 Mon Sep 17 00:00:00 2001
f325b2
From: Miklos Vajna <vmiklos@collabora.co.uk>
f325b2
Date: Tue, 15 Sep 2015 12:21:10 +0200
f325b2
Subject: [PATCH 128/398] gtktiledviwer: allow GtkToolItems in multiple windows
f325b2
f325b2
Change-Id: I6c19a9bdd34163d12047929170e5cfa7bb9a5820
f325b2
(cherry picked from commit 91d67ec9a5cc2064b90a888ed962d215bee5dc2d)
f325b2
---
f325b2
 .../qa/gtktiledviewer/gtktiledviewer.cxx           | 88 ++++++++++++----------
f325b2
 1 file changed, 48 insertions(+), 40 deletions(-)
f325b2
f325b2
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
f325b2
index 2559d124c72a..09f16da396af 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 GtkToolItem* pEnableEditing;
f325b2
-static GtkToolItem* pBold;
f325b2
-static GtkToolItem* pItalic;
f325b2
-static GtkToolItem* pUnderline;
f325b2
-static GtkToolItem* pStrikethrough;
f325b2
 static GtkWidget* pScrolledWindow;
f325b2
 static std::map<GtkToolItem*, std::string> g_aToolItemCommandNames;
f325b2
 static std::map<std::string, GtkToolItem*> g_aCommandNameToolItems;
f325b2
@@ -54,10 +49,20 @@ class TiledWindow
f325b2
 public:
f325b2
     GtkWidget* m_pDocView;
f325b2
     GtkWidget* m_pStatusBar;
f325b2
+    GtkToolItem* m_pEnableEditing;
f325b2
+    GtkToolItem* m_pBold;
f325b2
+    GtkToolItem* m_pItalic;
f325b2
+    GtkToolItem* m_pUnderline;
f325b2
+    GtkToolItem* m_pStrikethrough;
f325b2
 
f325b2
     TiledWindow()
f325b2
         : m_pDocView(0),
f325b2
-        m_pStatusBar(0)
f325b2
+        m_pStatusBar(0),
f325b2
+        m_pEnableEditing(0),
f325b2
+        m_pBold(0),
f325b2
+        m_pItalic(0),
f325b2
+        m_pUnderline(0),
f325b2
+        m_pStrikethrough(0)
f325b2
     {
f325b2
     }
f325b2
 };
f325b2
@@ -152,7 +157,7 @@ static void toggleEditing(GtkWidget* pButton, gpointer /*pItem*/)
f325b2
     TiledWindow& rWindow = lcl_getTiledWindow(pButton);
f325b2
 
f325b2
     LOKDocView* pLOKDocView = LOK_DOC_VIEW(rWindow.m_pDocView);
f325b2
-    bool bActive = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(pEnableEditing));
f325b2
+    bool bActive = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(rWindow.m_pEnableEditing));
f325b2
     if (bool(lok_doc_view_get_edit(pLOKDocView)) != bActive)
f325b2
         lok_doc_view_set_edit(pLOKDocView, bActive);
f325b2
 }
f325b2
@@ -292,10 +297,12 @@ static gboolean signalFindbar(GtkWidget* pWidget, GdkEventKey* pEvent, gpointer
f325b2
 /// LOKDocView changed edit state -> inform the tool button.
f325b2
 static void signalEdit(LOKDocView* pLOKDocView, gboolean bWasEdit, gpointer /*pData*/)
f325b2
 {
f325b2
+    TiledWindow& rWindow = lcl_getTiledWindow(GTK_WIDGET(pLOKDocView));
f325b2
+
f325b2
     gboolean bEdit = lok_doc_view_get_edit(pLOKDocView);
f325b2
     g_info("signalEdit: %d -> %d", bWasEdit, lok_doc_view_get_edit(pLOKDocView));
f325b2
-    if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(pEnableEditing)) != bEdit)
f325b2
-        gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(pEnableEditing), bEdit);
f325b2
+    if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(rWindow.m_pEnableEditing)) != bEdit)
f325b2
+        gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(rWindow.m_pEnableEditing), bEdit);
f325b2
 }
f325b2
 
f325b2
 /// LOKDocView changed command state -> inform the tool button.
f325b2
@@ -531,6 +538,7 @@ int main( int argc, char* argv[] )
f325b2
     gtk_init( &argc, &argv );
f325b2
 
f325b2
     GtkWidget *pWindow = gtk_window_new( GTK_WINDOW_TOPLEVEL );
f325b2
+    TiledWindow aWindow;
f325b2
     gtk_window_set_title( GTK_WINDOW(pWindow), "LibreOfficeKit GTK Tiled Viewer" );
f325b2
     gtk_window_set_default_size(GTK_WINDOW(pWindow), 1024, 768);
f325b2
     g_signal_connect( pWindow, "destroy", G_CALLBACK(gtk_main_quit), NULL );
f325b2
@@ -588,7 +596,8 @@ int main( int argc, char* argv[] )
f325b2
     g_signal_connect(G_OBJECT(pCopyButton), "clicked", G_CALLBACK(doCopy), NULL);
f325b2
     gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), gtk_separator_tool_item_new(), -1);
f325b2
 
f325b2
-    pEnableEditing = gtk_toggle_tool_button_new();
f325b2
+    GtkToolItem* pEnableEditing = gtk_toggle_tool_button_new();
f325b2
+    aWindow.m_pEnableEditing = pEnableEditing;
f325b2
     gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON (pEnableEditing), "insert-text-symbolic");
f325b2
     gtk_tool_item_set_tooltip_text(pEnableEditing, "Edit");
f325b2
     gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), pEnableEditing, -1);
f325b2
@@ -608,33 +617,33 @@ int main( int argc, char* argv[] )
f325b2
 
f325b2
     gtk_toolbar_insert( GTK_TOOLBAR(pToolbar), gtk_separator_tool_item_new(), -1);
f325b2
 
f325b2
-    pBold = gtk_toggle_tool_button_new();
f325b2
-    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON (pBold), "format-text-bold-symbolic");
f325b2
-    gtk_tool_item_set_tooltip_text(pBold, "Bold");
f325b2
-    gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), pBold, -1);
f325b2
-    g_signal_connect(G_OBJECT(pBold), "toggled", G_CALLBACK(toggleToolItem), NULL);
f325b2
-    lcl_registerToolItem(pBold, ".uno:Bold");
f325b2
-
f325b2
-    pItalic = gtk_toggle_tool_button_new();
f325b2
-    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON (pItalic), "format-text-italic-symbolic");
f325b2
-    gtk_tool_item_set_tooltip_text(pItalic, "Italic");
f325b2
-    gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), pItalic, -1);
f325b2
-    g_signal_connect(G_OBJECT(pItalic), "toggled", G_CALLBACK(toggleToolItem), NULL);
f325b2
-    lcl_registerToolItem(pItalic, ".uno:Italic");
f325b2
-
f325b2
-    pUnderline = gtk_toggle_tool_button_new();
f325b2
-    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON (pUnderline), "format-text-underline-symbolic");
f325b2
-    gtk_tool_item_set_tooltip_text(pUnderline, "Underline");
f325b2
-    gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), pUnderline, -1);
f325b2
-    g_signal_connect(G_OBJECT(pUnderline), "toggled", G_CALLBACK(toggleToolItem), NULL);
f325b2
-    lcl_registerToolItem(pUnderline, ".uno:Underline");
f325b2
-
f325b2
-    pStrikethrough = gtk_toggle_tool_button_new ();
f325b2
-    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON (pStrikethrough), "format-text-strikethrough-symbolic");
f325b2
-    gtk_tool_item_set_tooltip_text(pStrikethrough, "Strikethrough");
f325b2
-    gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), pStrikethrough, -1);
f325b2
-    g_signal_connect(G_OBJECT(pStrikethrough), "toggled", G_CALLBACK(toggleToolItem), NULL);
f325b2
-    lcl_registerToolItem(pStrikethrough, ".uno:Strikeout");
f325b2
+    aWindow.m_pBold = gtk_toggle_tool_button_new();
f325b2
+    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON (aWindow.m_pBold), "format-text-bold-symbolic");
f325b2
+    gtk_tool_item_set_tooltip_text(aWindow.m_pBold, "Bold");
f325b2
+    gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), aWindow.m_pBold, -1);
f325b2
+    g_signal_connect(G_OBJECT(aWindow.m_pBold), "toggled", G_CALLBACK(toggleToolItem), NULL);
f325b2
+    lcl_registerToolItem(aWindow.m_pBold, ".uno:Bold");
f325b2
+
f325b2
+    aWindow.m_pItalic = gtk_toggle_tool_button_new();
f325b2
+    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON (aWindow.m_pItalic), "format-text-italic-symbolic");
f325b2
+    gtk_tool_item_set_tooltip_text(aWindow.m_pItalic, "Italic");
f325b2
+    gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), aWindow.m_pItalic, -1);
f325b2
+    g_signal_connect(G_OBJECT(aWindow.m_pItalic), "toggled", G_CALLBACK(toggleToolItem), NULL);
f325b2
+    lcl_registerToolItem(aWindow.m_pItalic, ".uno:Italic");
f325b2
+
f325b2
+    aWindow.m_pUnderline = gtk_toggle_tool_button_new();
f325b2
+    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON (aWindow.m_pUnderline), "format-text-underline-symbolic");
f325b2
+    gtk_tool_item_set_tooltip_text(aWindow.m_pUnderline, "Underline");
f325b2
+    gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), aWindow.m_pUnderline, -1);
f325b2
+    g_signal_connect(G_OBJECT(aWindow.m_pUnderline), "toggled", G_CALLBACK(toggleToolItem), NULL);
f325b2
+    lcl_registerToolItem(aWindow.m_pUnderline, ".uno:Underline");
f325b2
+
f325b2
+    aWindow.m_pStrikethrough = gtk_toggle_tool_button_new ();
f325b2
+    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(aWindow.m_pStrikethrough), "format-text-strikethrough-symbolic");
f325b2
+    gtk_tool_item_set_tooltip_text(aWindow.m_pStrikethrough, "Strikethrough");
f325b2
+    gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), aWindow.m_pStrikethrough, -1);
f325b2
+    g_signal_connect(G_OBJECT(aWindow.m_pStrikethrough), "toggled", G_CALLBACK(toggleToolItem), NULL);
f325b2
+    lcl_registerToolItem(aWindow.m_pStrikethrough, ".uno:Strikeout");
f325b2
 
f325b2
     gtk_box_pack_start( GTK_BOX(pVBox), pToolbar, FALSE, FALSE, 0 ); // Adds to top.
f325b2
 
f325b2
@@ -672,6 +681,7 @@ int main( int argc, char* argv[] )
f325b2
 
f325b2
     // Docview
f325b2
     GtkWidget* pDocView = lok_doc_view_new (argv[1], NULL, NULL);
f325b2
+    aWindow.m_pDocView = pDocView;
f325b2
 #if GLIB_CHECK_VERSION(2,40,0)
f325b2
     g_assert_nonnull(pDocView);
f325b2
 #endif
f325b2
@@ -697,6 +707,7 @@ int main( int argc, char* argv[] )
f325b2
     g_signal_connect(pDocView, "load-changed", G_CALLBACK(loadChanged), pProgressBar);
f325b2
 
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(pStatusBar), pProgressBar);
f325b2
@@ -706,9 +717,6 @@ int main( int argc, char* argv[] )
f325b2
     // Hide the findbar by default.
f325b2
     gtk_widget_hide(pFindbar);
f325b2
 
f325b2
-    TiledWindow aWindow;
f325b2
-    aWindow.m_pDocView = pDocView;
f325b2
-    aWindow.m_pStatusBar = pStatusBar;
f325b2
     g_aWindows[pWindow] = aWindow;
f325b2
 
f325b2
     lok_doc_view_open_document( LOK_DOC_VIEW(pDocView), argv[2], NULL, openDocumentCallback, pDocView );
f325b2
-- 
f325b2
2.12.0
f325b2