You can now open minimized programs.

This commit is contained in:
Rasmus Rasmussen 2025-12-21 20:58:41 +01:00
parent 3f4e32524a
commit 52b9337d06
4 changed files with 23 additions and 19 deletions

View File

@ -1,13 +1,13 @@
#include "helpers.h"
void Helpers::recalculate_taskbar(std::vector<TaskBarItem>* task_bar_items) {
for (size_t i = 0; i < task_bar_items->size(); ++i) {
auto& item = (*task_bar_items)[i];
void Helpers::recalculate_taskbar(std::vector<TaskBarItem>& task_bar_items) {
for (size_t i = 0; i < task_bar_items.size(); ++i) {
TaskBarItem item = task_bar_items[i];
if (i == 0) {
item.place_x = 60;
} else {
const TaskBarItem& prev = (*task_bar_items)[i - 1];
const TaskBarItem& prev = task_bar_items[i - 1];
item.place_x = prev.place_x + prev.offset_x;
}
}

View File

@ -4,5 +4,5 @@
#include <vector>
struct Helpers {
static void recalculate_taskbar(std::vector<TaskBarItem>* task_bar_items);
static void recalculate_taskbar(std::vector<TaskBarItem>& task_bar_items);
};

View File

@ -24,7 +24,7 @@ void Program::loop(void* pvParameters) {
Program* self = static_cast<Program*>(pvParameters);
for(;;) {
self->_display_state->update_display.store(true);
//self->_display_state->update_display.store(true);
vTaskDelay(500);
}
}

View File

@ -2,6 +2,7 @@
#include "GLOBALS.h"
#include <algorithm>
#include "system_manager.h"
#include "helpers.h"
void Shell::init(TFT_Handler* th, DISPLAY_STATE* ds, SystemManager* system_manager) {
tft = th;
@ -114,19 +115,7 @@ void Shell::close_window(int window_id) {
}
}
for (int i = 0; i < task_bar_items.size(); ++i) {
TaskBarItem item = task_bar_items[i];
if (i == 0) {
item.place_x = 60;
} else {
// For subsequent items, use the previous item's position + offset
const TaskBarItem& prev = task_bar_items.back();
item.place_x = prev.place_x + prev.offset_x;
}
task_bar_items[i] = item;
}
Helpers::recalculate_taskbar(task_bar_items);
}
void Shell::minimize_window(int window_id) {
@ -341,6 +330,21 @@ int Shell::handle_desktop_click(CLICK_EVENT event) {
}
int Shell::handle_taskbar_click(CLICK_EVENT event) {
for (int i = 0; i < task_bar_items.size(); ++i) {
if (event.x >= task_bar_items[i].place_x && event.x <= (task_bar_items[i].place_x + task_bar_items[i].width) && event.y >= task_bar_items[i].place_y && event.y <= (task_bar_items[i].place_y + task_bar_items[i].height)) {
for (int j = 0; j < windows.size(); ++j) {
if (windows[j]->id == task_bar_items[i].id) {
for (int k = 0; k < windows.size(); ++k) windows[k]->focused = false;
windows[j]->focused = true;
windows[j]->minimized = false;
}
}
for (int l = 0; l < task_bar_items.size(); ++l) task_bar_items[l].focused = false;
task_bar_items[i].focused = true;
return task_bar_items[i].id;
}
}
return -1;
}