A custom mouse cursor for my custom rack

A custom mouse cursor for my custom rack:

2 Likes

That’s pretty cool! Forked vcv? Does it work on all platforms?

I run my own version for a long time to prevent GPU performance issues. I don’t know (and I don’t care) about other platforms than Windows.

I added glfwSetCursor() using standard cursors in ModuleWidget.cpp

void ModuleWidget::onDragStart(const DragStartEvent& e) {
	if (e.button == GLFW_MOUSE_BUTTON_LEFT) {
		// HACK Disable FramebufferWidget redrawing subpixels while dragging
		//APP->window->fbDirtyOnSubpixelChange() = false;
		if (!settings::lockModules) {
			glfwSetCursor(APP->window->win, glfwCreateStandardCursor(GLFW_HAND_CURSOR));
		}

		// Clear dragRack so dragging in not enabled until mouse is moved a bit.
		internal->dragRackPos = math::Vec(NAN, NAN);

		// Prepare initial position of modules for history.
		APP->scene->rack->updateModuleOldPositions();
	}
}

void ModuleWidget::onDragEnd(const DragEndEvent& e) {
	if (e.button == GLFW_MOUSE_BUTTON_LEFT) {
		APP->window->fbDirtyOnSubpixelChange() = true;
		
		glfwSetCursor(APP->window->win, NULL);

		// The next time the module is dragged, it should always move immediately
		internal->dragEnabled = true;

		history::ComplexAction* h = APP->scene->rack->getModuleDragAction();
		if (!h->isEmpty())
			APP->history->push(h);
		else
			delete h;
	}
}
3 Likes