summaryrefslogtreecommitdiff
path: root/muse2/muse/midiedit
diff options
context:
space:
mode:
authorTim E. Real <termtech@rogers.com>2013-01-26 01:15:35 +0000
committerTim E. Real <termtech@rogers.com>2013-01-26 01:15:35 +0000
commit5fb1cdfe5bdd48406e58441b354fc87d3d3c582e (patch)
tree8a2defe11002fe54b9d8da10d86a8689787676ae /muse2/muse/midiedit
parent488e311fb446d129aff962106aead79fa96a849c (diff)
Feature/fix: Zoom at cursor! Zoom now zooms about cursor.
Diffstat (limited to 'muse2/muse/midiedit')
-rw-r--r--muse2/muse/midiedit/drumedit.cpp35
-rw-r--r--muse2/muse/midiedit/pianoroll.cpp34
2 files changed, 32 insertions, 37 deletions
diff --git a/muse2/muse/midiedit/drumedit.cpp b/muse2/muse/midiedit/drumedit.cpp
index e52bc687..c64641e9 100644
--- a/muse2/muse/midiedit/drumedit.cpp
+++ b/muse2/muse/midiedit/drumedit.cpp
@@ -39,6 +39,9 @@
#include <QSettings>
#include <QComboBox>
#include <QLabel>
+#include <QCursor>
+#include <QPoint>
+#include <QRect>
#include "drumedit.h"
#include "mtscale.h"
@@ -504,8 +507,7 @@ DrumEdit::DrumEdit(MusECore::PartList* pl, QWidget* parent, const char* name, un
canvas->setCanvasTools(drumeditTools);
canvas->setFocus();
connect(canvas, SIGNAL(toolChanged(int)), tools2, SLOT(set(int)));
- connect(canvas, SIGNAL(horizontalZoomIn()), SLOT(horizontalZoomIn()));
- connect(canvas, SIGNAL(horizontalZoomOut()), SLOT(horizontalZoomOut()));
+ connect(canvas, SIGNAL(horizontalZoom(bool,int)), SLOT(horizontalZoom(bool,int)));
connect(canvas, SIGNAL(ourDrumMapChanged(bool)), SLOT(ourDrumMapChanged(bool)));
time->setOrigin(offset, 0);
@@ -1518,26 +1520,21 @@ void DrumEdit::keyPressEvent(QKeyEvent* event)
return;
}
else if (key == shortcuts[SHRT_ZOOM_IN].key) {
- int mag = hscroll->mag();
- int zoomlvl = MusEGui::ScrollScale::getQuickZoomLevel(mag);
- if (zoomlvl < MusEGui::ScrollScale::zoomLevels-1)
- zoomlvl++;
-
- int newmag = MusEGui::ScrollScale::convertQuickZoomLevelToMag(zoomlvl);
-
- hscroll->setMag(newmag);
- //printf("mag = %d zoomlvl = %d newmag = %d\n", mag, zoomlvl, newmag);
+ int offset = 0;
+ QPoint cp = canvas->mapFromGlobal(QCursor::pos());
+ QPoint sp = split1->mapFromGlobal(QCursor::pos());
+ if(cp.x() >= 0 && cp.x() < canvas->width() && sp.y() >= 0 && sp.y() < split1->height())
+ offset = cp.x();
+ horizontalZoom(true, offset);
return;
}
else if (key == shortcuts[SHRT_ZOOM_OUT].key) {
- int mag = hscroll->mag();
- int zoomlvl = MusEGui::ScrollScale::getQuickZoomLevel(mag);
- if (zoomlvl > 1)
- zoomlvl--;
-
- int newmag = MusEGui::ScrollScale::convertQuickZoomLevelToMag(zoomlvl);
- hscroll->setMag(newmag);
- //printf("mag = %d zoomlvl = %d newmag = %d\n", mag, zoomlvl, newmag);
+ int offset = 0;
+ QPoint cp = canvas->mapFromGlobal(QCursor::pos());
+ QPoint sp = split1->mapFromGlobal(QCursor::pos());
+ if(cp.x() >= 0 && cp.x() < canvas->width() && sp.y() >= 0 && sp.y() < split1->height())
+ offset = cp.x();
+ horizontalZoom(false, offset);
return;
}
else if (key == shortcuts[SHRT_SCROLL_LEFT].key) {
diff --git a/muse2/muse/midiedit/pianoroll.cpp b/muse2/muse/midiedit/pianoroll.cpp
index 740a5773..9fc835a1 100644
--- a/muse2/muse/midiedit/pianoroll.cpp
+++ b/muse2/muse/midiedit/pianoroll.cpp
@@ -42,6 +42,9 @@
#include <QMimeData>
#include <QScrollArea>
#include <QSettings>
+#include <QCursor>
+#include <QPoint>
+#include <QRect>
#include <stdio.h>
@@ -372,8 +375,7 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,
canvas->setCanvasTools(pianorollTools);
canvas->setFocus();
connect(canvas, SIGNAL(toolChanged(int)), tools2, SLOT(set(int)));
- connect(canvas, SIGNAL(horizontalZoomIn()), SLOT(horizontalZoomIn()));
- connect(canvas, SIGNAL(horizontalZoomOut()), SLOT(horizontalZoomOut()));
+ connect(canvas, SIGNAL(horizontalZoom(bool,int)), SLOT(horizontalZoom(bool,int)));
time->setOrigin(offset, 0);
gridS1->setRowStretch(2, 100);
@@ -1198,25 +1200,21 @@ void PianoRoll::keyPressEvent(QKeyEvent* event)
return;
}
else if (key == shortcuts[SHRT_ZOOM_IN].key) {
- int mag = hscroll->mag();
- int zoomlvl = MusEGui::ScrollScale::getQuickZoomLevel(mag);
- if (zoomlvl < MusEGui::ScrollScale::zoomLevels-1)
- zoomlvl++;
-
- int newmag = MusEGui::ScrollScale::convertQuickZoomLevelToMag(zoomlvl);
- hscroll->setMag(newmag);
- //printf("mag = %d zoomlvl = %d newmag = %d\n", mag, zoomlvl, newmag);
+ int offset = 0;
+ QPoint cp = canvas->mapFromGlobal(QCursor::pos());
+ QPoint sp = splitter->mapFromGlobal(QCursor::pos());
+ if(cp.x() >= 0 && cp.x() < canvas->width() && sp.y() >= 0 && sp.y() < splitter->height())
+ offset = cp.x();
+ horizontalZoom(true, offset);
return;
}
else if (key == shortcuts[SHRT_ZOOM_OUT].key) {
- int mag = hscroll->mag();
- int zoomlvl = MusEGui::ScrollScale::getQuickZoomLevel(mag);
- if (zoomlvl > 1)
- zoomlvl--;
-
- int newmag = MusEGui::ScrollScale::convertQuickZoomLevelToMag(zoomlvl);
- hscroll->setMag(newmag);
- //printf("mag = %d zoomlvl = %d newmag = %d\n", mag, zoomlvl, newmag);
+ int offset = 0;
+ QPoint cp = canvas->mapFromGlobal(QCursor::pos());
+ QPoint sp = splitter->mapFromGlobal(QCursor::pos());
+ if(cp.x() >= 0 && cp.x() < canvas->width() && sp.y() >= 0 && sp.y() < splitter->height())
+ offset = cp.x();
+ horizontalZoom(false, offset);
return;
}
else if (key == shortcuts[SHRT_GOTO_CPOS].key) {