summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPranav Kant <pranavk@collabora.co.uk>2017-11-23 21:07:07 +0530
committerJan Holesovsky <kendy@collabora.com>2017-11-29 10:16:53 +0100
commit2798e1aae5311094c30d8e667c1e8be4e4314f8d (patch)
tree004547849b68813d3b60e5f0fdfa645c1e1f5317
parent91b7c8bb605dfc8090922d765b9ac4cffef973fe (diff)
lokdialog: Create dialog when callback is received
With this, we do away with initial approach of rendering the dialog on a large surface. We now create the cairo surface with dimensions of the dialog. Change-Id: Icb034693c7f1c656b7daae7f5c711b5bd4d8e880
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx36
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx1
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx36
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv.ui1
4 files changed, 34 insertions, 40 deletions
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx b/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
index dfdbc3bc6ca6..03e54afd1d22 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
@@ -22,6 +22,24 @@
#include <iostream>
+static gboolean deleteLokDialog(GtkWidget* pWidget, GdkEvent* /*event*/, gpointer userdata)
+{
+ GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(userdata);
+ g_info("deleteLokDialog");
+ gtv_application_window_unregister_child_window(window, GTK_WINDOW(pWidget));
+
+ return FALSE;
+}
+
+static gboolean destroyLokDialog(GtkWidget* pWidget, gpointer userdata)
+{
+ GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(userdata);
+ g_info("destroyLokDialog");
+ gtv_application_window_unregister_child_window(window, GTK_WINDOW(pWidget));
+
+ return FALSE;
+}
+
void LOKDocViewSigHandlers::editChanged(LOKDocView* pDocView, gboolean bWasEdit, gpointer)
{
GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(pDocView)));
@@ -293,9 +311,23 @@ void LOKDocViewSigHandlers::dialog(LOKDocView* pDocView, gchar* pPayload, gpoint
const std::string aDialogId = aRoot.get<std::string>("dialogId");
const std::string aAction = aRoot.get<std::string>("action");
- // we only understand 'invalidate' and 'close' as of now
- if (aAction != "invalidate" && aAction != "close")
+ if (aAction == "created")
+ {
+ const std::string aSize = aRoot.get<std::string>("size");
+ std::vector<int> aPoints = GtvHelpers::splitIntoIntegers(aSize, ", ", 2);
+ GtkWidget* pDialog = gtv_lok_dialog_new(pDocView, aDialogId.c_str(), aPoints[0], aPoints[1]);
+ g_info("created dialog, for dialogid: %s with size: %s", aDialogId.c_str(), aSize.c_str());
+
+ gtv_application_window_register_child_window(window, GTK_WINDOW(pDialog));
+ g_signal_connect(pDialog, "destroy", G_CALLBACK(destroyLokDialog), window);
+ g_signal_connect(pDialog, "delete-event", G_CALLBACK(deleteLokDialog), window);
+
+ gtk_window_set_resizable(GTK_WINDOW(pDialog), false);
+ gtk_widget_show_all(GTK_WIDGET(pDialog));
+ gtk_window_present(GTK_WINDOW(pDialog));
+
return;
+ }
GList* pChildWins = gtv_application_window_get_all_child_windows(window);
GList* pIt = nullptr;
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx
index d18482447a7e..33e454808ed2 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-main-toolbar.cxx
@@ -119,7 +119,6 @@ gtv_main_toolbar_init(GtvMainToolbar* toolbar)
gtk_builder_add_callback_symbol(builder.get(), "documentRepair", G_CALLBACK(documentRepair));
gtk_builder_add_callback_symbol(builder.get(), "signalAddressbar", G_CALLBACK(signalAddressbar));
gtk_builder_add_callback_symbol(builder.get(), "signalFormulabar", G_CALLBACK(signalFormulabar));
- gtk_builder_add_callback_symbol(builder.get(), "openLokDialog", G_CALLBACK(openLokDialog));
// find toolbar
// Note: These buttons are not the part of GtvMainToolbar
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx
index 521c49ea3eb2..fe7d33210ce1 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx
@@ -290,42 +290,6 @@ void changePartMode( GtkWidget* pSelector, gpointer /* pItem */ )
}
}
-static gboolean deleteLokDialog(GtkWidget* pWidget, GdkEvent* /*event*/, gpointer userdata)
-{
- GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(userdata);
- g_info("deleteLokDialog");
- gtv_application_window_unregister_child_window(window, GTK_WINDOW(pWidget));
-
- return FALSE;
-}
-
-static gboolean destroyLokDialog(GtkWidget* pWidget, gpointer userdata)
-{
- GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(userdata);
- g_info("destroyLokDialog");
- gtv_application_window_unregister_child_window(window, GTK_WINDOW(pWidget));
-
- return FALSE;
-}
-
-void openLokDialog( GtkWidget* pSelector, gpointer /*pItem*/ )
-{
- GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(pSelector));
- gchar* pDialogId = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(pSelector));
- // Set the width, height of the dialog to something large enough to be able
- // to render any dialog
- GtkWidget* pDialog = gtv_lok_dialog_new(LOK_DOC_VIEW(window->lokdocview), pDialogId, 1024, 768);
- gtv_application_window_register_child_window(window, GTK_WINDOW(pDialog));
- g_signal_connect(pDialog, "destroy", G_CALLBACK(destroyLokDialog), window);
- g_signal_connect(pDialog, "delete-event", G_CALLBACK(deleteLokDialog), window);
- g_free(pDialogId);
-
- g_info("openLokDialog");
- gtk_window_set_resizable(GTK_WINDOW(pDialog), false);
- gtk_widget_show_all(GTK_WIDGET(pDialog));
- gtk_window_present(GTK_WINDOW(pDialog));
-}
-
void changeZoom( GtkWidget* pButton, gpointer /* pItem */ )
{
static const float fZooms[] = { 0.25, 0.5, 0.75, 1.0, 1.5, 2.0, 3.0, 5.0 };
diff --git a/libreofficekit/qa/gtktiledviewer/gtv.ui b/libreofficekit/qa/gtktiledviewer/gtv.ui
index 7030ecaead5b..c8699b33cd5e 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv.ui
+++ b/libreofficekit/qa/gtktiledviewer/gtv.ui
@@ -452,7 +452,6 @@
<object class="GtkComboBoxText" id="combo_dialogselector">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <signal name="changed" handler="openLokDialog" swapped="no"/>
</object>
</child>
</object>