mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-06 03:29:44 -06:00
Change logic of reordering of images to accomodate for drag and drop
This commit is contained in:
@@ -29,6 +29,7 @@
|
||||
#include <modules/webbrowser/include/webkeyboardhandler.h>
|
||||
#include <modules/webbrowser/webbrowsermodule.h>
|
||||
#include <ghoul/misc/dictionaryjsonformatter.h>
|
||||
#include <deque>
|
||||
|
||||
namespace {
|
||||
constexpr std::string_view _loggerCat = "WwtCommunicator";
|
||||
@@ -290,16 +291,34 @@ glm::dvec2 WwtCommunicator::equatorialAim() const {
|
||||
}
|
||||
|
||||
void WwtCommunicator::setImageOrder(int i, int order) {
|
||||
using it = std::deque<std::pair<int, double>>::iterator;
|
||||
// Find in selected images list
|
||||
auto current = findSelectedImage(i);
|
||||
auto target = _selectedImages.begin() + order;
|
||||
it current = findSelectedImage(i);
|
||||
int currentIndex = std::distance(_selectedImages.begin(), current);
|
||||
int difference = order - currentIndex;
|
||||
|
||||
// Make sure the image was found in the list
|
||||
if (current != _selectedImages.end() && target != _selectedImages.end()) {
|
||||
// Swap the two images
|
||||
std::iter_swap(current, target);
|
||||
std::deque<std::pair<int, double>> newDeque;
|
||||
|
||||
for (int i = 0; i < _selectedImages.size(); i++) {
|
||||
if (i == currentIndex) {
|
||||
continue;
|
||||
}
|
||||
else if (i == order) {
|
||||
if (order < currentIndex) {
|
||||
newDeque.push_back(*current);
|
||||
newDeque.push_back(_selectedImages[i]);
|
||||
}
|
||||
else {
|
||||
newDeque.push_back(_selectedImages[i]);
|
||||
newDeque.push_back(*current);
|
||||
}
|
||||
}
|
||||
else {
|
||||
newDeque.push_back(_selectedImages[i]);
|
||||
}
|
||||
}
|
||||
|
||||
_selectedImages = newDeque;
|
||||
int reverseOrder = static_cast<int>(_selectedImages.size()) - order - 1;
|
||||
ghoul::Dictionary message = setLayerOrderMessage(std::to_string(i), reverseOrder);
|
||||
sendMessageToWwt(message);
|
||||
|
||||
Reference in New Issue
Block a user