diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-08-22 09:15:51 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-08-23 16:28:12 +0200 |
commit | 693d9ff29e7838bafcad5faa7a4e7355807c54cb (patch) | |
tree | dc343d9002fb6dd0abda2875fbff233f6111eda9 /vcl | |
parent | 61f75f05adb171064d9ba17b4684069de36fa11a (diff) |
weld SwMailMergeWizard
Change-Id: I03a7fd1f7676792387155db986d710a001887c8d
Reviewed-on: https://gerrit.libreoffice.org/77977
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 26 | ||||
-rw-r--r-- | vcl/source/control/wizardmachine.cxx | 14 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 86 |
3 files changed, 63 insertions, 63 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 547bac4170c1..b13ecb37645f 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -1553,10 +1553,18 @@ public: // take the first shown page as the size for all pages if (m_xWizard->GetPageSizePixel().Width() == 0) { - TabPage* pPage = m_xWizard->GetPage(m_aIds[nPage]); - assert(pPage); - Size aPageSize(pPage->get_preferred_size()); - m_xWizard->SetPageSizePixel(aPageSize); + Size aFinalSize; + for (int i = 0, nPages = get_n_pages(); i < nPages; ++i) + { + TabPage* pPage = m_xWizard->GetPage(m_aIds[i]); + assert(pPage); + Size aPageSize(pPage->get_preferred_size()); + if (aPageSize.Width() > aFinalSize.Width()) + aFinalSize.setWidth(aPageSize.Width()); + if (aPageSize.Height() > aFinalSize.Height()) + aFinalSize.setHeight(aPageSize.Height()); + } + m_xWizard->SetPageSizePixel(aFinalSize); } m_xWizard->ShowPage(m_aIds[nPage]); @@ -2238,15 +2246,15 @@ weld::Button* SalInstanceDialog::weld_widget_for_response(int nResponse) weld::Button* SalInstanceAssistant::weld_widget_for_response(int nResponse) { PushButton* pButton = nullptr; - if (nResponse == static_cast<int>(WizardButtonFlags::NEXT)) + if (nResponse == RET_YES) pButton = m_xWizard->m_pNextPage; - else if (nResponse == static_cast<int>(WizardButtonFlags::PREVIOUS)) + else if (nResponse == RET_NO) pButton = m_xWizard->m_pPrevPage; - else if (nResponse == static_cast<int>(WizardButtonFlags::FINISH)) + else if (nResponse == RET_OK) pButton = m_xWizard->m_pFinish; - else if (nResponse == static_cast<int>(WizardButtonFlags::CANCEL)) + else if (nResponse == RET_CANCEL) pButton = m_xWizard->m_pCancel; - else if (nResponse == static_cast<int>(WizardButtonFlags::HELP)) + else if (nResponse == RET_HELP) pButton = m_xWizard->m_pHelp; if (pButton) return new SalInstanceButton(pButton, nullptr, false); diff --git a/vcl/source/control/wizardmachine.cxx b/vcl/source/control/wizardmachine.cxx index 8f291ce40c38..8082df6ab39a 100644 --- a/vcl/source/control/wizardmachine.cxx +++ b/vcl/source/control/wizardmachine.cxx @@ -688,11 +688,11 @@ namespace vcl : AssistantController(pParent, "vcl/ui/wizard.ui", "Wizard") , m_nCurState(0) , m_pFirstPage(nullptr) - , m_xFinish(m_xAssistant->weld_widget_for_response(static_cast<int>(WizardButtonFlags::FINISH))) - , m_xCancel(m_xAssistant->weld_widget_for_response(static_cast<int>(WizardButtonFlags::CANCEL))) - , m_xNextPage(m_xAssistant->weld_widget_for_response(static_cast<int>(WizardButtonFlags::NEXT))) - , m_xPrevPage(m_xAssistant->weld_widget_for_response(static_cast<int>(WizardButtonFlags::PREVIOUS))) - , m_xHelp(m_xAssistant->weld_widget_for_response(static_cast<int>(WizardButtonFlags::HELP))) + , m_xFinish(m_xAssistant->weld_widget_for_response(RET_OK)) + , m_xCancel(m_xAssistant->weld_widget_for_response(RET_CANCEL)) + , m_xNextPage(m_xAssistant->weld_widget_for_response(RET_YES)) + , m_xPrevPage(m_xAssistant->weld_widget_for_response(RET_NO)) + , m_xHelp(m_xAssistant->weld_widget_for_response(RET_HELP)) , m_pImpl(new WizardMachineImplData) { implConstruct(nButtonFlags); @@ -892,7 +892,7 @@ namespace vcl bool WizardMachine::onFinish() { - return Finish(static_cast<int>(WizardButtonFlags::FINISH)); + return Finish(RET_OK); } IMPL_LINK_NOARG(WizardMachine, OnFinish, weld::Button&, void) @@ -909,7 +909,7 @@ namespace vcl IMPL_LINK_NOARG(WizardMachine, OnCancel, weld::Button&, void) { - m_xAssistant->response(static_cast<int>(WizardButtonFlags::CANCEL)); + m_xAssistant->response(RET_CANCEL); } WizardMachine::WizardState WizardMachine::determineNextState( WizardState _nCurrentState ) const diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index fc0ccc8184fe..1d6216958c71 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -3010,7 +3010,7 @@ struct DialogRunner } static void signal_response(GtkDialog*, gint nResponseId, gpointer data); - static void signal_cancel(GtkDialog*, gpointer data); + static void signal_cancel(GtkAssistant*, gpointer data); static gboolean signal_delete(GtkDialog* pDialog, GdkEventAny*, gpointer data) { @@ -3159,6 +3159,7 @@ private: std::function<void(sal_Int32)> m_aFunc; gulong m_nCloseSignalId; gulong m_nResponseSignalId; + gulong m_nCancelSignalId; gulong m_nSignalDeleteId; // for calc ref dialog that shrink to range selection widgets and resize back @@ -3185,12 +3186,25 @@ private: pThis->asyncresponse(ret); } - static gboolean signalAsyncDelete(GtkDialog*, GdkEventAny*, gpointer) + static void signalAsyncCancel(GtkAssistant*, gpointer widget) { + GtkInstanceDialog* pThis = static_cast<GtkInstanceDialog*>(widget); + // make esc in an assistant act as if cancel button was pressed + pThis->close(false); + } + + static gboolean signalAsyncDelete(GtkWidget* pDialog, GdkEventAny*, gpointer widget) + { + GtkInstanceDialog* pThis = static_cast<GtkInstanceDialog*>(widget); + if (GTK_IS_ASSISTANT(pThis->m_pDialog)) + { + // An assistant isn't a dialog, but we want to treat it like one + signalAsyncResponse(pDialog, GTK_RESPONSE_DELETE_EVENT, widget); + } return true; /* Do not destroy */ } - virtual int GtkToVcl(int ret) + static int GtkToVcl(int ret) { if (ret == GTK_RESPONSE_OK) ret = RET_OK; @@ -3204,10 +3218,12 @@ private: ret = RET_YES; else if (ret == GTK_RESPONSE_NO) ret = RET_NO; + else if (ret == GTK_RESPONSE_HELP) + ret = RET_HELP; return ret; } - virtual int VclToGtk(int nResponse) + static int VclToGtk(int nResponse) { if (nResponse == RET_OK) return GTK_RESPONSE_OK; @@ -3233,6 +3249,7 @@ public: , m_aDialogRun(pDialog, this) , m_nCloseSignalId(g_signal_connect(m_pDialog, "close", G_CALLBACK(signalClose), this)) , m_nResponseSignalId(0) + , m_nCancelSignalId(0) , m_nSignalDeleteId(0) , m_pRefEdit(nullptr) , m_nOldEditWidth(0) @@ -3243,7 +3260,7 @@ public: virtual bool runAsync(std::shared_ptr<weld::DialogController> rDialogController, const std::function<void(sal_Int32)>& func) override { - assert(!m_nResponseSignalId); + assert(!m_nResponseSignalId && !m_nCancelSignalId); m_xDialogController = rDialogController; m_aFunc = func; @@ -3252,7 +3269,8 @@ public: m_aDialogRun.inc_modal_count(); show(); - m_nResponseSignalId = g_signal_connect(m_pDialog, "response", G_CALLBACK(signalAsyncResponse), this); + m_nResponseSignalId = GTK_IS_DIALOG(m_pDialog) ? g_signal_connect(m_pDialog, "response", G_CALLBACK(signalAsyncResponse), this) : 0; + m_nCancelSignalId = GTK_IS_ASSISTANT(m_pDialog) ? g_signal_connect(m_pDialog, "cancel", G_CALLBACK(signalAsyncCancel), this) : 0; m_nSignalDeleteId = g_signal_connect(m_pDialog, "delete-event", G_CALLBACK(signalAsyncDelete), this); return true; @@ -3261,7 +3279,7 @@ public: virtual bool runAsync(std::shared_ptr<Dialog> const & rxSelf, const std::function<void(sal_Int32)>& func) override { assert( rxSelf.get() == this ); - assert(!m_nResponseSignalId); + assert(!m_nResponseSignalId && !m_nCancelSignalId); // In order to store a shared_ptr to ourself, we have to have been constructed by make_shared, // which is that rxSelf enforces. @@ -3272,7 +3290,8 @@ public: m_aDialogRun.inc_modal_count(); show(); - m_nResponseSignalId = g_signal_connect(m_pDialog, "response", G_CALLBACK(signalAsyncResponse), this); + m_nResponseSignalId = GTK_IS_DIALOG(m_pDialog) ? g_signal_connect(m_pDialog, "response", G_CALLBACK(signalAsyncResponse), this) : 0; + m_nCancelSignalId = GTK_IS_ASSISTANT(m_pDialog) ? g_signal_connect(m_pDialog, "cancel", G_CALLBACK(signalAsyncCancel), this) : 0; m_nSignalDeleteId = g_signal_connect(m_pDialog, "delete-event", G_CALLBACK(signalAsyncDelete), this); return true; @@ -3442,6 +3461,8 @@ public: g_signal_handler_disconnect(m_pDialog, m_nCloseSignalId); if (m_nResponseSignalId) g_signal_handler_disconnect(m_pDialog, m_nResponseSignalId); + if (m_nCancelSignalId) + g_signal_handler_disconnect(m_pDialog, m_nCancelSignalId); if (m_nSignalDeleteId) g_signal_handler_disconnect(m_pDialog, m_nSignalDeleteId); } @@ -3462,7 +3483,7 @@ void DialogRunner::signal_response(GtkDialog*, gint nResponseId, gpointer data) pThis->loop_quit(); } -void DialogRunner::signal_cancel(GtkDialog*, gpointer data) +void DialogRunner::signal_cancel(GtkAssistant*, gpointer data) { DialogRunner* pThis = static_cast<DialogRunner*>(data); @@ -3630,40 +3651,6 @@ private: return -1; } - virtual int GtkToVcl(int ret) override - { - if (ret == GTK_RESPONSE_OK) - ret = static_cast<int>(WizardButtonFlags::FINISH); - else if (ret == GTK_RESPONSE_CANCEL) - ret = static_cast<int>(WizardButtonFlags::CANCEL); - else if (ret == GTK_RESPONSE_DELETE_EVENT) - ret = static_cast<int>(WizardButtonFlags::CANCEL); - else if (ret == GTK_RESPONSE_CLOSE) - ret = static_cast<int>(WizardButtonFlags::CANCEL); - else if (ret == GTK_RESPONSE_ACCEPT) - ret = static_cast<int>(WizardButtonFlags::NEXT); - else if (ret == GTK_RESPONSE_REJECT) - ret = static_cast<int>(WizardButtonFlags::PREVIOUS); - else if (ret == GTK_RESPONSE_HELP) - ret = static_cast<int>(WizardButtonFlags::HELP); - return ret; - } - - virtual int VclToGtk(int nResponse) override - { - if (nResponse == static_cast<int>(WizardButtonFlags::NEXT)) - return GTK_RESPONSE_ACCEPT; - if (nResponse == static_cast<int>(WizardButtonFlags::PREVIOUS)) - return GTK_RESPONSE_REJECT; - else if (nResponse == static_cast<int>(WizardButtonFlags::FINISH)) - return GTK_RESPONSE_OK; - else if (nResponse == static_cast<int>(WizardButtonFlags::CANCEL)) - return GTK_RESPONSE_CANCEL; - else if (nResponse == static_cast<int>(WizardButtonFlags::HELP)) - return GTK_RESPONSE_HELP; - return nResponse; - } - static void wrap_sidebar_label(GtkWidget *pWidget, gpointer /*user_data*/) { if (GTK_IS_LABEL(pWidget)) @@ -3851,9 +3838,9 @@ public: virtual GtkButton* get_widget_for_response(int nGtkResponse) override { GtkButton* pButton = nullptr; - if (nGtkResponse == GTK_RESPONSE_ACCEPT) + if (nGtkResponse == GTK_RESPONSE_YES) pButton = m_pNext; - else if (nGtkResponse == GTK_RESPONSE_REJECT) + else if (nGtkResponse == GTK_RESPONSE_NO) pButton = m_pBack; else if (nGtkResponse == GTK_RESPONSE_OK) pButton = m_pFinish; @@ -5212,8 +5199,13 @@ void GtkInstanceDialog::response(int nResponse) gtk_dialog_response(GTK_DIALOG(m_pDialog), nGtkResponse); else if (GTK_IS_ASSISTANT(m_pDialog)) { - m_aDialogRun.m_nResponseId = nGtkResponse; - m_aDialogRun.loop_quit(); + if (!m_aDialogRun.loop_is_running()) + asyncresponse(nGtkResponse); + else + { + m_aDialogRun.m_nResponseId = nGtkResponse; + m_aDialogRun.loop_quit(); + } } } |