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
If min > max, returns min
If min > max, clamps the range to [max, min]
*/
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 */


+ 2
- 0
include/midi.hpp View File

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


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


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


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

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

static std::string newVersion = "";


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

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


RackScene::RackScene() {


+ 7
- 6
src/midi.cpp View File

@@ -43,13 +43,13 @@ bool MidiIO::isActive() {
json_t *MidiIO::toJson() {
json_t *rootJ = json_object();
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));
return 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) {
std::string deviceName = json_string_value(deviceNameJ);
// Search for device with equal name
@@ -83,13 +83,13 @@ static void midiInputCallback(double timeStamp, std::vector<unsigned char> *mess
}

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

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

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

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

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)
return;
if (!parent->box.contains(box))
box.pos = box.pos.plus(e.scrollRel);
box.pos.y += e.scrollRel.y;
e.consumed = true;
}



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

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

// Fit all children in the box
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