Using the library wasn't really possible with all the debug messages it generated, so either suppress them completely or turn them into trace messages which can be activated on demand if needed.
330 lines
8.5 KiB
C++
330 lines
8.5 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: include/wx/qt/winevent_qt.h
|
|
// Purpose: QWidget to wxWindow event handler
|
|
// Author: Javier Torres, Peter Most
|
|
// Modified by:
|
|
// Created: 21.06.10
|
|
// Copyright: (c) Javier Torres
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_QT_EVENTSIGNALFORWARDER_H_
|
|
#define _WX_QT_EVENTSIGNALFORWARDER_H_
|
|
|
|
#include "wx/log.h"
|
|
#include "wx/window.h"
|
|
#include "wx/qt/private/converter.h"
|
|
#include "wx/qt/private/utils.h"
|
|
|
|
#include <QtCore/QEvent>
|
|
#include <QtGui/QPaintEvent>
|
|
|
|
template< typename Handler >
|
|
class wxQtSignalHandler
|
|
{
|
|
protected:
|
|
wxQtSignalHandler( Handler *handler )
|
|
{
|
|
m_handler = handler;
|
|
}
|
|
|
|
void EmitEvent( wxEvent &event ) const
|
|
{
|
|
wxWindow *handler = GetHandler();
|
|
event.SetEventObject( handler );
|
|
handler->HandleWindowEvent( event );
|
|
}
|
|
|
|
virtual Handler *GetHandler() const
|
|
{
|
|
return m_handler;
|
|
}
|
|
|
|
private:
|
|
Handler *m_handler;
|
|
};
|
|
|
|
template < typename Widget, typename Handler >
|
|
class wxQtEventSignalHandler : public Widget, public wxQtSignalHandler< Handler >
|
|
{
|
|
public:
|
|
wxQtEventSignalHandler( wxWindow *parent, Handler *handler )
|
|
: Widget( parent != NULL ? parent->GetHandle() : NULL )
|
|
, wxQtSignalHandler< Handler >( handler )
|
|
{
|
|
// Set immediatelly as it is used to check if wxWindow is alive
|
|
wxWindow::QtStoreWindowPointer( this, handler );
|
|
|
|
// Handle QWidget destruction signal AFTER it gets deleted
|
|
QObject::connect( this, &QObject::destroyed, this,
|
|
&wxQtEventSignalHandler::HandleDestroyedSignal );
|
|
|
|
}
|
|
|
|
void HandleDestroyedSignal()
|
|
{
|
|
}
|
|
|
|
virtual Handler *GetHandler() const
|
|
{
|
|
// Only process the signal / event if the wxWindow is not destroyed
|
|
if ( !wxWindow::QtRetrieveWindowPointer( this ) )
|
|
{
|
|
return NULL;
|
|
}
|
|
else
|
|
return wxQtSignalHandler< Handler >::GetHandler();
|
|
}
|
|
|
|
protected:
|
|
/* Not implemented here: wxHelpEvent, wxIdleEvent wxJoystickEvent,
|
|
* wxMouseCaptureLostEvent, wxMouseCaptureChangedEvent,
|
|
* wxPowerEvent, wxScrollWinEvent, wxSysColourChangedEvent */
|
|
|
|
//wxActivateEvent
|
|
virtual void changeEvent ( QEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleChangeEvent(this, event) )
|
|
Widget::changeEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxCloseEvent
|
|
virtual void closeEvent ( QCloseEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleCloseEvent(this, event) )
|
|
Widget::closeEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxContextMenuEvent
|
|
virtual void contextMenuEvent ( QContextMenuEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleContextMenuEvent(this, event) )
|
|
Widget::contextMenuEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxDropFilesEvent
|
|
//virtual void dropEvent ( QDropEvent * event ) { }
|
|
|
|
//wxMouseEvent
|
|
virtual void enterEvent ( QEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleEnterEvent(this, event) )
|
|
Widget::enterEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxFocusEvent.
|
|
virtual void focusInEvent ( QFocusEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleFocusEvent(this, event) )
|
|
Widget::focusInEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxFocusEvent.
|
|
virtual void focusOutEvent ( QFocusEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleFocusEvent(this, event) )
|
|
Widget::focusOutEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxShowEvent
|
|
virtual void hideEvent ( QHideEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleShowEvent(this, event) )
|
|
Widget::hideEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxKeyEvent
|
|
virtual void keyPressEvent ( QKeyEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleKeyEvent(this, event) )
|
|
Widget::keyPressEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxKeyEvent
|
|
virtual void keyReleaseEvent ( QKeyEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleKeyEvent(this, event) )
|
|
Widget::keyReleaseEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxMouseEvent
|
|
virtual void leaveEvent ( QEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleEnterEvent(this, event) )
|
|
Widget::leaveEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxMouseEvent
|
|
virtual void mouseDoubleClickEvent ( QMouseEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleMouseEvent(this, event) )
|
|
Widget::mouseDoubleClickEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxMouseEvent
|
|
virtual void mouseMoveEvent ( QMouseEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleMouseEvent(this, event) )
|
|
Widget::mouseMoveEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxMouseEvent
|
|
virtual void mousePressEvent ( QMouseEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleMouseEvent(this, event) )
|
|
Widget::mousePressEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxMouseEvent
|
|
virtual void mouseReleaseEvent ( QMouseEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleMouseEvent(this, event) )
|
|
Widget::mouseReleaseEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxMoveEvent
|
|
virtual void moveEvent ( QMoveEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleMoveEvent(this, event) )
|
|
Widget::moveEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxEraseEvent then wxPaintEvent
|
|
virtual void paintEvent ( QPaintEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandlePaintEvent(this, event) )
|
|
Widget::paintEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxSizeEvent
|
|
virtual void resizeEvent ( QResizeEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleResizeEvent(this, event) )
|
|
Widget::resizeEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxShowEvent
|
|
virtual void showEvent ( QShowEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleShowEvent(this, event) )
|
|
Widget::showEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
//wxMouseEvent
|
|
virtual void wheelEvent ( QWheelEvent * event )
|
|
{
|
|
if ( !this->GetHandler() )
|
|
return;
|
|
|
|
if ( !this->GetHandler()->QtHandleWheelEvent(this, event) )
|
|
Widget::wheelEvent(event);
|
|
else
|
|
event->accept();
|
|
}
|
|
|
|
/* Unused Qt events
|
|
virtual void actionEvent ( QActionEvent * event ) { }
|
|
virtual void dragEnterEvent ( QDragEnterEvent * event ) { }
|
|
virtual void dragLeaveEvent ( QDragLeaveEvent * event ) { }
|
|
virtual void dragMoveEvent ( QDragMoveEvent * event ) { }
|
|
virtual void inputMethodEvent ( QInputMethodEvent * event ) { }
|
|
virtual bool macEvent ( EventHandlerCallRef caller, EventRef event ) { }
|
|
virtual bool qwsEvent ( QWSEvent * event ) { }
|
|
virtual void tabletEvent ( QTabletEvent * event ) { }
|
|
virtual bool winEvent ( MSG * message, long * result ) { }
|
|
virtual bool x11Event ( XEvent * event ) { } */
|
|
|
|
};
|
|
|
|
#endif
|