You can now open minimized programs.
This commit is contained in:
parent
3f4e32524a
commit
52b9337d06
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
};
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user