mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2026-06-07 08:24:47 -04:00
cleanup, refactor, right mouse waterfall zoom drag
This commit is contained in:
@@ -1,6 +1,17 @@
|
||||
#include "MouseTracker.h"
|
||||
#include <iostream>
|
||||
|
||||
MouseTracker::MouseTracker(wxWindow *target) :
|
||||
mouseX(0), mouseY(0), lastMouseX(0), lastMouseY(0), originMouseX(0), originMouseY(0), deltaMouseX(0), deltaMouseY(0), vertDragLock(false), horizDragLock(
|
||||
false), isMouseDown(false), isMouseRightDown(false), isMouseInView(false), target(target) {
|
||||
|
||||
}
|
||||
|
||||
MouseTracker::MouseTracker() :
|
||||
MouseTracker(NULL) {
|
||||
|
||||
}
|
||||
|
||||
void MouseTracker::OnMouseMoved(wxMouseEvent& event) {
|
||||
if (target == NULL) {
|
||||
return;
|
||||
@@ -14,14 +25,14 @@ void MouseTracker::OnMouseMoved(wxMouseEvent& event) {
|
||||
deltaMouseX = mouseX - lastMouseX;
|
||||
deltaMouseY = mouseY - lastMouseY;
|
||||
|
||||
if (isMouseDown) {
|
||||
if (isMouseDown || isMouseRightDown) {
|
||||
#ifndef __APPLE__
|
||||
if (horizDragLock && vertDragLock) {
|
||||
target->WarpPointer(originMouseX * ClientSize.x, (1.0-originMouseY) * ClientSize.y);
|
||||
target->WarpPointer(originMouseX * ClientSize.x, (1.0 - originMouseY) * ClientSize.y);
|
||||
mouseX = originMouseX;
|
||||
mouseY = originMouseY;
|
||||
} else if (vertDragLock && mouseY != lastMouseY) {
|
||||
target->WarpPointer(event.m_x, (1.0-originMouseY) * ClientSize.y);
|
||||
} else if (vertDragLock && mouseY != lastMouseY) {
|
||||
target->WarpPointer(event.m_x, (1.0 - originMouseY) * ClientSize.y);
|
||||
mouseY = originMouseY;
|
||||
} else if (horizDragLock && mouseX != lastMouseX) {
|
||||
target->WarpPointer(originMouseX * ClientSize.x, event.m_y);
|
||||
@@ -34,8 +45,12 @@ void MouseTracker::OnMouseMoved(wxMouseEvent& event) {
|
||||
lastMouseY = mouseY;
|
||||
}
|
||||
|
||||
void MouseTracker::OnMouseWheelMoved(wxMouseEvent& event) {
|
||||
// std::cout << "wheel?" << std::endl;
|
||||
}
|
||||
|
||||
void MouseTracker::OnMouseDown(wxMouseEvent& event) {
|
||||
if (target == NULL) {
|
||||
if (isMouseRightDown || target == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -50,20 +65,39 @@ void MouseTracker::OnMouseDown(wxMouseEvent& event) {
|
||||
isMouseDown = true;
|
||||
}
|
||||
|
||||
void MouseTracker::OnMouseWheelMoved(wxMouseEvent& event) {
|
||||
// std::cout << "wheel?" << std::endl;
|
||||
}
|
||||
|
||||
void MouseTracker::OnMouseReleased(wxMouseEvent& event) {
|
||||
isMouseDown = false;
|
||||
}
|
||||
|
||||
void MouseTracker::OnMouseRightDown(wxMouseEvent& event) {
|
||||
if (isMouseDown || target == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
const wxSize ClientSize = target->GetClientSize();
|
||||
|
||||
mouseX = lastMouseX = (float) event.m_x / (float) ClientSize.x;
|
||||
mouseY = lastMouseY = 1.0 - (float) event.m_y / (float) ClientSize.y;
|
||||
|
||||
originMouseX = mouseX;
|
||||
originMouseY = mouseY;
|
||||
|
||||
isMouseRightDown = true;
|
||||
}
|
||||
|
||||
void MouseTracker::OnMouseRightReleased(wxMouseEvent& event) {
|
||||
isMouseRightDown = false;
|
||||
}
|
||||
|
||||
void MouseTracker::OnMouseEnterWindow(wxMouseEvent& event) {
|
||||
isMouseInView = true;
|
||||
isMouseDown = false;
|
||||
isMouseRightDown = false;
|
||||
}
|
||||
|
||||
void MouseTracker::OnMouseLeftWindow(wxMouseEvent& event) {
|
||||
isMouseDown = false;
|
||||
isMouseRightDown = false;
|
||||
isMouseInView = false;
|
||||
}
|
||||
|
||||
@@ -126,3 +160,8 @@ bool MouseTracker::mouseInView() {
|
||||
void MouseTracker::setTarget(wxWindow *target_in) {
|
||||
target = target_in;
|
||||
}
|
||||
|
||||
|
||||
bool MouseTracker::mouseRightDown() {
|
||||
return isMouseRightDown;
|
||||
}
|
||||
|
||||
+7
-11
@@ -4,20 +4,15 @@
|
||||
|
||||
class MouseTracker {
|
||||
public:
|
||||
MouseTracker(wxWindow *target) :
|
||||
mouseX(0), mouseY(0), lastMouseX(0), lastMouseY(0), originMouseX(0), originMouseY(0), deltaMouseX(0), deltaMouseY(0), vertDragLock(false), horizDragLock(false), isMouseDown(false), isMouseInView(false), target(target) {
|
||||
|
||||
}
|
||||
|
||||
MouseTracker() :
|
||||
mouseX(0), mouseY(0), lastMouseX(0), lastMouseY(0), originMouseX(0), originMouseY(0), deltaMouseX(0), deltaMouseY(0), vertDragLock(false), horizDragLock(false), isMouseDown(false), isMouseInView(false), target(NULL) {
|
||||
|
||||
}
|
||||
MouseTracker(wxWindow *target);
|
||||
MouseTracker();
|
||||
|
||||
void OnMouseMoved(wxMouseEvent& event);
|
||||
void OnMouseDown(wxMouseEvent& event);
|
||||
void OnMouseWheelMoved(wxMouseEvent& event);
|
||||
void OnMouseDown(wxMouseEvent& event);
|
||||
void OnMouseReleased(wxMouseEvent& event);
|
||||
void OnMouseRightDown(wxMouseEvent& event);
|
||||
void OnMouseRightReleased(wxMouseEvent& event);
|
||||
void OnMouseEnterWindow(wxMouseEvent& event);
|
||||
void OnMouseLeftWindow(wxMouseEvent& event);
|
||||
|
||||
@@ -35,6 +30,7 @@ public:
|
||||
void setVertDragLock(bool dragLock);
|
||||
void setHorizDragLock(bool dragLock);
|
||||
bool mouseDown();
|
||||
bool mouseRightDown();
|
||||
bool mouseInView();
|
||||
void setTarget(wxWindow *target_in);
|
||||
|
||||
@@ -45,6 +41,6 @@ private:
|
||||
float deltaMouseX, deltaMouseY;
|
||||
|
||||
bool vertDragLock, horizDragLock;
|
||||
bool isMouseDown, isMouseInView;
|
||||
bool isMouseDown, isMouseRightDown, isMouseInView;
|
||||
wxWindow *target;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user