first commit
This commit is contained in:
90
project/fm_viewer/ui/rm_widget_drag.cpp
Normal file
90
project/fm_viewer/ui/rm_widget_drag.cpp
Normal file
@@ -0,0 +1,90 @@
|
||||
#include "rm_widget_drag.h"
|
||||
#include <QMouseEvent>
|
||||
#include <Windows.h>
|
||||
|
||||
RMWidgetDrag::RMWidgetDrag(QWidget *target,int titleBarHeight) : QObject(target)
|
||||
{
|
||||
_target = target;
|
||||
_dragStart = false;
|
||||
_titleBarHeight = titleBarHeight;
|
||||
_target->installEventFilter(this);
|
||||
}
|
||||
|
||||
RMWidgetDrag::~RMWidgetDrag()
|
||||
{
|
||||
_target->removeEventFilter(this);
|
||||
}
|
||||
|
||||
bool RMWidgetDrag::eventFilter(QObject *o, QEvent*e)
|
||||
{
|
||||
// Alt+Enter 방지
|
||||
if(e->type() == QEvent::WindowActivate)
|
||||
{
|
||||
//qInfo() << __FUNCTION__ << e->type();
|
||||
::RegisterHotKey((HWND)_target->winId(),
|
||||
998,
|
||||
MOD_ALT | MOD_NOREPEAT,
|
||||
VK_RETURN);
|
||||
}
|
||||
else if (e->type() == QEvent::WindowDeactivate)
|
||||
{
|
||||
//qInfo() << __FUNCTION__ << e->type();
|
||||
::UnregisterHotKey((HWND)_target->winId(),998);
|
||||
}
|
||||
|
||||
Q_UNUSED(o);
|
||||
#if (USE_KEY_EVENT_FOR_SEEK)
|
||||
if(e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease)
|
||||
{
|
||||
QKeyEvent* ke = static_cast<QKeyEvent*>(e);
|
||||
if(ke->isAutoRepeat() == true)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
qInfo() << "KE:" << ((e->type() == QEvent::KeyPress) ? "P" : "R");
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (DESIGN_LAYOUT_MODE)
|
||||
if( e->type() == QEvent::MouseButtonPress)
|
||||
{
|
||||
// CHILD 는 적용안됨.. 어..쩔..
|
||||
QMouseEvent* me = static_cast<QMouseEvent*>(e);
|
||||
qInfo() << me->pos();
|
||||
}
|
||||
#endif // DESIGN_LAYOUT_MODE
|
||||
|
||||
if (_target->isMaximized() == false &&
|
||||
_target->isFullScreen() == false &&
|
||||
(e->type() == QEvent::MouseMove ||
|
||||
e->type() == QEvent::MouseButtonPress ||
|
||||
e->type() == QEvent::MouseButtonRelease))
|
||||
{
|
||||
QMouseEvent* me = static_cast<QMouseEvent*>(e);
|
||||
switch (e->type())
|
||||
{
|
||||
case QEvent::MouseMove:
|
||||
if (_dragStart)
|
||||
{
|
||||
_target->move(_target->frameGeometry().topLeft() + (me->pos() - _dragPos));
|
||||
emit onWindowMove();
|
||||
}
|
||||
return true; // discard
|
||||
break;
|
||||
case QEvent::MouseButtonPress:
|
||||
if (_target->rect().contains(me->pos()) && me->pos().y() < _titleBarHeight)
|
||||
{
|
||||
_dragStart = true;
|
||||
_dragPos = me->pos();
|
||||
}
|
||||
return true; // discard
|
||||
break;
|
||||
case QEvent::MouseButtonRelease:
|
||||
_dragStart = false;
|
||||
//mouseRealese(static_cast<QMouseEvent*>(e));
|
||||
return true; // discard
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user