Fixed quick menu popping up in incorrect position if GUI Scale is not 1.0

This commit is contained in:
Yousef Khadadeh 2025-08-17 16:49:30 +03:00
parent 6fb150e72a
commit 1e30e3596d
3 changed files with 11 additions and 5 deletions

View file

@ -254,7 +254,7 @@ void DrawingProgram::update() {
if(world.main.toolbar.paintPopupLocation)
world.main.toolbar.paintPopupLocation = std::nullopt;
else
world.main.toolbar.paintPopupLocation = world.main.input.mouse.pos / world.main.window.scale;
world.main.toolbar.paintPopupLocation = world.main.input.mouse.pos / world.main.toolbar.final_gui_scale();
}
controls.previousMouseWorldPos = controls.currentMouseWorldPos;

View file

@ -1673,7 +1673,7 @@ void Toolbar::start_gui() {
io->mouse.rightClick = main.input.mouse.rightClicks;
io->mouse.leftHeld = main.input.mouse.leftDown;
io->mouse.rightHeld = main.input.mouse.rightDown;
io->mouse.globalPos = main.input.mouse.pos / (guiScale * main.window.scale);
io->mouse.globalPos = main.input.mouse.pos / final_gui_scale();
io->mouse.scroll = main.input.mouse.scrollAmount;
io->deltaTime = main.deltaTime;
@ -1707,6 +1707,10 @@ void Toolbar::start_gui() {
gui.begin();
}
float Toolbar::final_gui_scale() {
return guiScale * main.window.scale;
}
void Toolbar::end_gui() {
gui.end();
if(io->acceptingTextInput)
@ -1718,7 +1722,7 @@ void Toolbar::end_gui() {
void Toolbar::draw(SkCanvas* canvas) {
if(!main.takingScreenshot) {
canvas->save();
canvas->scale(guiScale * main.window.scale, guiScale * main.window.scale);
canvas->scale(final_gui_scale(), final_gui_scale());
gui.draw(canvas);
canvas->restore();
}

View file

@ -77,6 +77,8 @@ class Toolbar {
Vector4f* colorLeft = nullptr;
Vector4f* colorRight = nullptr;
std::optional<Vector2f> paintPopupLocation;
float final_gui_scale();
private:
static void sdl_open_file_dialog_callback(void* userData, const char * const * fileList, int filter);
@ -128,14 +130,14 @@ class Toolbar {
bool justAssignedColorLeft = false;
bool justAssignedColorRight = false;
float guiScale = 1.0f;
bool showPerformance = false;
bool menuPopUpOpen = false;
bool optionsMenuOpen = false;
bool playerMenuOpen = false;
float guiScale = 1.0f;
enum {
CHATBOXSTATE_OPEN,
CHATBOXSTATE_JUSTOPEN,