summaryrefslogtreecommitdiff
path: root/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx')
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx31
1 files changed, 19 insertions, 12 deletions
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
index e5b67d18c57c..f58884c79207 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
@@ -21,6 +21,7 @@
#include "gtv-lokdocview-signal-handlers.hxx"
#include "gtv-calc-header-bar.hxx"
#include "gtv-comments-sidebar.hxx"
+#include "gtv-lok-dialog.hxx"
#include <boost/property_tree/json_parser.hpp>
#include <boost/optional.hpp>
@@ -314,8 +315,7 @@ static void setupDocView(GtvApplicationWindow* window)
g_signal_connect(window->lokdocview, "formula-changed", G_CALLBACK(LOKDocViewSigHandlers::formulaChanged), nullptr);
g_signal_connect(window->lokdocview, "password-required", G_CALLBACK(LOKDocViewSigHandlers::passwordRequired), nullptr);
g_signal_connect(window->lokdocview, "comment", G_CALLBACK(LOKDocViewSigHandlers::comment), nullptr);
- g_signal_connect(window->lokdocview, "dialog", G_CALLBACK(LOKDocViewSigHandlers::dialog), nullptr);
- g_signal_connect(window->lokdocview, "dialog-child", G_CALLBACK(LOKDocViewSigHandlers::dialogChild), nullptr);
+ g_signal_connect(window->lokdocview, "window", G_CALLBACK(LOKDocViewSigHandlers::window), nullptr);
g_signal_connect(window->lokdocview, "configure-event", G_CALLBACK(LOKDocViewSigHandlers::configureEvent), nullptr);
}
@@ -422,7 +422,7 @@ gtv_application_window_unregister_child_window(GtvApplicationWindow* window, Gtk
}
GtkWindow*
-gtv_application_window_get_child_window_by_id(GtvApplicationWindow* window, const gchar* pWinId)
+gtv_application_window_get_child_window_by_id(GtvApplicationWindow* window, guint nWinId)
{
GtvApplicationWindowPrivate* priv = getPrivate(window);
GList* pIt = nullptr;
@@ -430,25 +430,32 @@ gtv_application_window_get_child_window_by_id(GtvApplicationWindow* window, cons
// For now, only dialogs are registered as child window
for (pIt = priv->m_pChildWindows; pIt != nullptr; pIt = pIt->next)
{
- gchar* dialogId = nullptr;
+ guint dialogId = 0;
g_object_get(G_OBJECT(pIt->data), "dialogid", &dialogId, nullptr);
- // prepend .uno:
- gchar* completeWinId = nullptr;
- if (pWinId != nullptr)
- {
- completeWinId = g_strconcat(".uno:", pWinId, nullptr);
- }
-
- if (dialogId != nullptr && g_str_equal(dialogId, completeWinId))
+ if (dialogId == nWinId)
{
ret = GTK_WINDOW(pIt->data);
break;
}
}
+
return ret;
}
+GtkWidget* gtv_application_window_get_parent(GtvApplicationWindow* window, guint nWinId)
+{
+ GtvApplicationWindowPrivate* priv = getPrivate(window);
+ GList* pIt = nullptr;
+ for (pIt = priv->m_pChildWindows; pIt != nullptr; pIt = pIt->next)
+ {
+ if (gtv_lok_dialog_is_parent_of(GTV_LOK_DIALOG(pIt->data), nWinId))
+ return GTK_WIDGET(pIt->data);
+ }
+ return nullptr;
+}
+
+
// temporary function to invalidate all opened dialogs
// because currently the dialog id returned in dialog invalidation payload
// doesn't match our hard-coded list of dialog ids (uno commands) for some dialogs