diff options
author | Tim E. Real <termtech@rogers.com> | 2013-01-26 01:15:35 +0000 |
---|---|---|
committer | Tim E. Real <termtech@rogers.com> | 2013-01-26 01:15:35 +0000 |
commit | 5fb1cdfe5bdd48406e58441b354fc87d3d3c582e (patch) | |
tree | 8a2defe11002fe54b9d8da10d86a8689787676ae /muse2/muse/midiedit | |
parent | 488e311fb446d129aff962106aead79fa96a849c (diff) |
Feature/fix: Zoom at cursor! Zoom now zooms about cursor.
Diffstat (limited to 'muse2/muse/midiedit')
-rw-r--r-- | muse2/muse/midiedit/drumedit.cpp | 35 | ||||
-rw-r--r-- | muse2/muse/midiedit/pianoroll.cpp | 34 |
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) { |