Browse Source

Fix scrolling menus again

pull/1639/head
Andrew Belt 7 years ago
parent
commit
55b47be432
6 changed files with 19 additions and 10 deletions
  1. +5
    -2
      include/math.hpp
  2. +2
    -0
      include/midi.hpp
  3. +3
    -0
      src/app/RackScene.cpp
  4. +7
    -6
      src/midi.cpp
  5. +1
    -1
      src/widgets/Menu.cpp
  6. +1
    -1
      src/widgets/MenuOverlay.cpp

+ 5
- 2
include/math.hpp View File

@@ -70,10 +70,13 @@ inline float nearf(float a, float b, float epsilon = 1e-6) {
} }


/** Limits a value between a minimum and maximum /** Limits a value between a minimum and maximum
If min > max, returns min
If min > max, clamps the range to [max, min]
*/ */
inline float clampf(float x, float min, float max) { inline float clampf(float x, float min, float max) {
return fmaxf(fminf(x, max), min);
if (min <= max)
return fmaxf(fminf(x, max), min);
else
return fmaxf(fminf(x, min), max);
} }


/** If the magnitude of x if less than eps, return 0 */ /** If the magnitude of x if less than eps, return 0 */


+ 2
- 0
include/midi.hpp View File

@@ -43,6 +43,7 @@ struct MidiIO {




struct MidiInput : MidiIO { struct MidiInput : MidiIO {
RtMidiIn *rtMidiIn = NULL;
MidiInput(); MidiInput();
~MidiInput(); ~MidiInput();
virtual void onMessage(const MidiMessage &message) {} virtual void onMessage(const MidiMessage &message) {}
@@ -56,6 +57,7 @@ struct MidiInputQueue : MidiInput {




struct MidiOutput : MidiIO { struct MidiOutput : MidiIO {
RtMidiOut *rtMidiOut = NULL;
MidiOutput(); MidiOutput();
~MidiOutput(); ~MidiOutput();
}; };


+ 3
- 0
src/app/RackScene.cpp View File

@@ -11,6 +11,8 @@ namespace rack {


static std::string newVersion = ""; static std::string newVersion = "";



#if defined(RELEASE)
static void checkVersion() { static void checkVersion() {
json_t *resJ = requestJson(METHOD_GET, gApiHost + "/version", NULL); json_t *resJ = requestJson(METHOD_GET, gApiHost + "/version", NULL);


@@ -25,6 +27,7 @@ static void checkVersion() {
json_decref(resJ); json_decref(resJ);
} }
} }
#endif




RackScene::RackScene() { RackScene::RackScene() {


+ 7
- 6
src/midi.cpp View File

@@ -43,13 +43,13 @@ bool MidiIO::isActive() {
json_t *MidiIO::toJson() { json_t *MidiIO::toJson() {
json_t *rootJ = json_object(); json_t *rootJ = json_object();
std::string deviceName = getDeviceName(device); std::string deviceName = getDeviceName(device);
json_object_set_new(rootJ, "device", json_string(deviceName.c_str()));
json_object_set_new(rootJ, "deviceName", json_string(deviceName.c_str()));
json_object_set_new(rootJ, "channel", json_integer(channel)); json_object_set_new(rootJ, "channel", json_integer(channel));
return rootJ; return rootJ;
} }


void MidiIO::fromJson(json_t *rootJ) { void MidiIO::fromJson(json_t *rootJ) {
json_t *deviceNameJ = json_object_get(rootJ, "device");
json_t *deviceNameJ = json_object_get(rootJ, "deviceName");
if (deviceNameJ) { if (deviceNameJ) {
std::string deviceName = json_string_value(deviceNameJ); std::string deviceName = json_string_value(deviceNameJ);
// Search for device with equal name // Search for device with equal name
@@ -83,13 +83,13 @@ static void midiInputCallback(double timeStamp, std::vector<unsigned char> *mess
} }


MidiInput::MidiInput() { MidiInput::MidiInput() {
RtMidiIn *rtMidiIn = new RtMidiIn();
rtMidiIn = new RtMidiIn();
rtMidi = rtMidiIn; rtMidi = rtMidiIn;
rtMidiIn->setCallback(midiInputCallback, this); rtMidiIn->setCallback(midiInputCallback, this);
} }


MidiInput::~MidiInput() { MidiInput::~MidiInput() {
delete dynamic_cast<RtMidiIn*>(rtMidi);
delete rtMidiIn;
} }


void MidiInputQueue::onMessage(const MidiMessage &message) { void MidiInputQueue::onMessage(const MidiMessage &message) {
@@ -107,11 +107,12 @@ void MidiInputQueue::onMessage(const MidiMessage &message) {
//////////////////// ////////////////////


MidiOutput::MidiOutput() { MidiOutput::MidiOutput() {
rtMidi = new RtMidiOut();
rtMidiOut = new RtMidiOut();
rtMidi = rtMidiOut;
} }


MidiOutput::~MidiOutput() { MidiOutput::~MidiOutput() {
delete dynamic_cast<RtMidiOut*>(rtMidi);
delete rtMidiOut;
} }






+ 1
- 1
src/widgets/Menu.cpp View File

@@ -54,7 +54,7 @@ void Menu::onScroll(EventScroll &e) {
if (!parent) if (!parent)
return; return;
if (!parent->box.contains(box)) if (!parent->box.contains(box))
box.pos = box.pos.plus(e.scrollRel);
box.pos.y += e.scrollRel.y;
e.consumed = true; e.consumed = true;
} }




+ 1
- 1
src/widgets/MenuOverlay.cpp View File

@@ -9,7 +9,7 @@ void MenuOverlay::step() {


// Fit all children in the box // Fit all children in the box
for (Widget *child : children) { for (Widget *child : children) {
child->box = child->box.nudge(Rect(Vec(0, 0), parent->box.size));
child->box = child->box.nudge(box.zeroPos());
} }
} }




Loading…
Cancel
Save