Files
wxWidgets/src/qt/dialog.cpp
Graham Dawes 07c6c61b2c Don't show context help button by default in wxQt dialogs
Only show it if wxDIALOG_EX_CONTEXTHELP was explicitly specified for
consistency with the other ports.

Closes https://github.com/wxWidgets/wxWidgets/pull/1382
2019-07-03 12:57:23 +02:00

136 lines
3.1 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: src/qt/dialog.cpp
// Author: Peter Most, Javier Torres, Mariano Reingart, Sean D'Epagnier
// Copyright: (c) 2010 wxWidgets dev team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/modalhook.h"
#include "wx/dialog.h"
#include "wx/qt/private/utils.h"
#include "wx/qt/private/winevent.h"
#include <QtWidgets/QDialog>
class wxQtDialog : public wxQtEventSignalHandler< QDialog, wxDialog >
{
public:
wxQtDialog( wxWindow *parent, wxDialog *handler );
};
wxQtDialog::wxQtDialog( wxWindow *parent, wxDialog *handler )
: wxQtEventSignalHandler< QDialog, wxDialog >( parent, handler )
{
}
wxDialog::wxDialog()
{
}
wxDialog::wxDialog( wxWindow *parent, wxWindowID id,
const wxString &title,
const wxPoint &pos,
const wxSize &size,
long style,
const wxString &name)
{
Create( parent, id, title, pos, size, style, name );
}
wxDialog::~wxDialog()
{
}
bool wxDialog::Create( wxWindow *parent, wxWindowID id,
const wxString &title,
const wxPoint &pos,
const wxSize &size,
long style,
const wxString &name)
{
SetExtraStyle(GetExtraStyle() | wxTOPLEVEL_EX_DIALOG);
// all dialogs should have tab traversal enabled
style |= wxTAB_TRAVERSAL;
m_qtWindow = new wxQtDialog(parent, this);
// Qt adds the context help button by default and we need to explicitly
// remove it to avoid having it if it's not explicitly requested.
if ( !HasExtraStyle(wxDIALOG_EX_CONTEXTHELP) )
{
Qt::WindowFlags qtFlags = m_qtWindow->windowFlags();
qtFlags &= ~Qt::WindowContextHelpButtonHint;
m_qtWindow->setWindowFlags(qtFlags);
}
if ( !wxTopLevelWindow::Create( parent, id, title, pos, size, style, name ) )
return false;
PostCreation();
return true;
}
int wxDialog::ShowModal()
{
WX_HOOK_MODAL_DIALOG();
wxCHECK_MSG( GetHandle() != NULL, -1, "Invalid dialog" );
QDialog *qDialog = GetDialogHandle();
qDialog->setModal(true);
Show(true);
bool ret = qDialog->exec();
if ( GetReturnCode() == 0 )
return ret ? wxID_OK : wxID_CANCEL;
return GetReturnCode();
}
void wxDialog::EndModal(int retCode)
{
wxCHECK_RET( GetDialogHandle() != NULL, "Invalid dialog" );
SetReturnCode(retCode);
GetDialogHandle()->done( QDialog::Accepted );
}
bool wxDialog::IsModal() const
{
wxCHECK_MSG( GetDialogHandle() != NULL, false, "Invalid dialog" );
return GetDialogHandle()->isModal();
}
bool wxDialog::Show(bool show)
{
if ( show == IsShown() )
return false;
if ( !show && IsModal() )
EndModal(wxID_CANCEL);
if ( show && CanDoLayoutAdaptation() )
DoLayoutAdaptation();
const bool ret = wxDialogBase::Show(show);
if (show)
InitDialog();
return ret;
}
QDialog *wxDialog::GetDialogHandle() const
{
return static_cast<QDialog*>(m_qtWindow);
}