Kaydet (Commit) bf11fe9f authored tarafından Miklos Vajna's avatar Miklos Vajna

gtktiledviewer: fix the per-view part selector

Need to populate it & register handlers for the non-first windows as
well.

Change-Id: I27231027c3f33fb081768c51ecc291b9f2a7e99b
Reviewed-on: https://gerrit.libreoffice.org/26225Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
Tested-by: 's avatarJenkins <ci@libreoffice.org>
üst 351aa724
...@@ -181,6 +181,12 @@ static std::map<GtkWidget*, TiledWindow> g_aWindows; ...@@ -181,6 +181,12 @@ static std::map<GtkWidget*, TiledWindow> g_aWindows;
static void setupDocView(GtkWidget* pDocView); static void setupDocView(GtkWidget* pDocView);
static GtkWidget* createWindow(TiledWindow& rWindow); static GtkWidget* createWindow(TiledWindow& rWindow);
static void openDocumentCallback (GObject* source_object, GAsyncResult* res, gpointer userdata); static void openDocumentCallback (GObject* source_object, GAsyncResult* res, gpointer userdata);
/// Called when the document size is changed.
static void signalSize(LOKDocView* pLOKDocView, gpointer pData);
/// Handler for m_pPartModeComboBox.
static void changePartMode( GtkWidget* pSelector, gpointer /*pItem*/);
/// Handler for m_pPartSelector.
static void changePart( GtkWidget* pSelector, gpointer /*pItem*/ );
static TiledWindow& lcl_getTiledWindow(GtkWidget* pWidget) static TiledWindow& lcl_getTiledWindow(GtkWidget* pWidget)
{ {
...@@ -515,6 +521,14 @@ static TiledWindow& setupWidgetAndCreateWindow(GtkWidget* pDocView) ...@@ -515,6 +521,14 @@ static TiledWindow& setupWidgetAndCreateWindow(GtkWidget* pDocView)
return lcl_getTiledWindow(pWindow); return lcl_getTiledWindow(pWindow);
} }
/// Register handlers on the combo boxes.
static void registerSelectorHandlers(TiledWindow& rWindow)
{
// Connect these signals after populating the selectors, to avoid re-rendering on setting the default part/partmode.
g_signal_connect(G_OBJECT(rWindow.m_pPartModeComboBox), "changed", G_CALLBACK(changePartMode), 0);
g_signal_connect(G_OBJECT(rWindow.m_pPartSelector), "changed", G_CALLBACK(changePart), 0);
}
/// Creates a new view, i.e. no LOK init or document load. /// Creates a new view, i.e. no LOK init or document load.
static void createView(GtkWidget* pButton, gpointer /*pItem*/) static void createView(GtkWidget* pButton, gpointer /*pItem*/)
{ {
...@@ -525,6 +539,9 @@ static void createView(GtkWidget* pButton, gpointer /*pItem*/) ...@@ -525,6 +539,9 @@ static void createView(GtkWidget* pButton, gpointer /*pItem*/)
// Hide the unused progress bar. // Hide the unused progress bar.
gtk_widget_show_all(rNewWindow.m_pStatusBar); gtk_widget_show_all(rNewWindow.m_pStatusBar);
gtk_widget_hide(rNewWindow.m_pProgressBar); gtk_widget_hide(rNewWindow.m_pProgressBar);
// Trigger a 'document size changed' event to populate the part selectors.
signalSize(LOK_DOC_VIEW(pDocView), nullptr);
registerSelectorHandlers(rNewWindow);
} }
/// Creates a new model, i.e. LOK init and document load, one view implicitly. /// Creates a new model, i.e. LOK init and document load, one view implicitly.
...@@ -1067,9 +1084,7 @@ static void openDocumentCallback (GObject* source_object, GAsyncResult* res, gpo ...@@ -1067,9 +1084,7 @@ static void openDocumentCallback (GObject* source_object, GAsyncResult* res, gpo
populatePartSelector(pDocView); populatePartSelector(pDocView);
populatePartModeSelector( GTK_COMBO_BOX_TEXT(rWindow.m_pPartModeComboBox) ); populatePartModeSelector( GTK_COMBO_BOX_TEXT(rWindow.m_pPartModeComboBox) );
// Connect these signals after populating the selectors, to avoid re-rendering on setting the default part/partmode. registerSelectorHandlers(rWindow);
g_signal_connect(G_OBJECT(rWindow.m_pPartModeComboBox), "changed", G_CALLBACK(changePartMode), 0);
g_signal_connect(G_OBJECT(rWindow.m_pPartSelector), "changed", G_CALLBACK(changePart), 0);
focusChain = g_list_append( focusChain, pDocView ); focusChain = g_list_append( focusChain, pDocView );
gtk_container_set_focus_chain ( GTK_CONTAINER (rWindow.m_pVBox), focusChain ); gtk_container_set_focus_chain ( GTK_CONTAINER (rWindow.m_pVBox), focusChain );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment