You can now open minimized programs.
This commit is contained in:
parent
3f4e32524a
commit
52b9337d06
@ -1,13 +1,13 @@
|
|||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
|
|
||||||
void Helpers::recalculate_taskbar(std::vector<TaskBarItem>* task_bar_items) {
|
void Helpers::recalculate_taskbar(std::vector<TaskBarItem>& task_bar_items) {
|
||||||
for (size_t i = 0; i < task_bar_items->size(); ++i) {
|
for (size_t i = 0; i < task_bar_items.size(); ++i) {
|
||||||
auto& item = (*task_bar_items)[i];
|
TaskBarItem item = task_bar_items[i];
|
||||||
|
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
item.place_x = 60;
|
item.place_x = 60;
|
||||||
} else {
|
} 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;
|
item.place_x = prev.place_x + prev.offset_x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,5 +4,5 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
struct Helpers {
|
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);
|
Program* self = static_cast<Program*>(pvParameters);
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
self->_display_state->update_display.store(true);
|
//self->_display_state->update_display.store(true);
|
||||||
vTaskDelay(500);
|
vTaskDelay(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,6 +2,7 @@
|
|||||||
#include "GLOBALS.h"
|
#include "GLOBALS.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include "system_manager.h"
|
#include "system_manager.h"
|
||||||
|
#include "helpers.h"
|
||||||
|
|
||||||
void Shell::init(TFT_Handler* th, DISPLAY_STATE* ds, SystemManager* system_manager) {
|
void Shell::init(TFT_Handler* th, DISPLAY_STATE* ds, SystemManager* system_manager) {
|
||||||
tft = th;
|
tft = th;
|
||||||
@ -114,19 +115,7 @@ void Shell::close_window(int window_id) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < task_bar_items.size(); ++i) {
|
Helpers::recalculate_taskbar(task_bar_items);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shell::minimize_window(int window_id) {
|
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) {
|
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;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user