Fix inventory context menu and mouse position (#44)

See #3

Co-authored-by: Alexander Batalov <alex.batalov@gmail.com>
This commit is contained in:
Jan Šimek 2022-06-12 11:30:05 +02:00 committed by GitHub
parent 8c2b9c7aec
commit 7872d4d3cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 6 deletions

View File

@ -2995,7 +2995,7 @@ void inventoryWindowOpenContextMenu(int keyCode, int inventoryWindowType)
int x; int x;
int y; int y;
mouseGetPositionInWindow(gInventoryWindow, &x, &y); mouseGetPosition(&x, &y);
int actionMenuItemsLength; int actionMenuItemsLength;
const int* actionMenuItems; const int* actionMenuItems;
@ -3043,9 +3043,15 @@ void inventoryWindowOpenContextMenu(int keyCode, int inventoryWindowType)
} }
const InventoryWindowDescription* windowDescription = &(gInventoryWindowDescriptions[inventoryWindowType]); const InventoryWindowDescription* windowDescription = &(gInventoryWindowDescriptions[inventoryWindowType]);
Rect windowRect;
windowGetRect(gInventoryWindow, &windowRect);
int inventoryWindowX = windowRect.left;
int inventoryWindowY = windowRect.top;
gameMouseRenderActionMenuItems(x, y, actionMenuItems, actionMenuItemsLength, gameMouseRenderActionMenuItems(x, y, actionMenuItems, actionMenuItemsLength,
windowDescription->width + windowDescription->x, windowDescription->width + inventoryWindowX,
windowDescription->height + windowDescription->y); windowDescription->height + inventoryWindowY);
InventoryCursorData* cursorData = &(gInventoryCursorData[INVENTORY_WINDOW_CURSOR_MENU]); InventoryCursorData* cursorData = &(gInventoryCursorData[INVENTORY_WINDOW_CURSOR_MENU]);
@ -3054,8 +3060,8 @@ void inventoryWindowOpenContextMenu(int keyCode, int inventoryWindowType)
artGetRotationOffsets(cursorData->frm, 0, &offsetX, &offsetY); artGetRotationOffsets(cursorData->frm, 0, &offsetX, &offsetY);
Rect rect; Rect rect;
rect.left = x - windowDescription->x - cursorData->width / 2 + offsetX; rect.left = x - inventoryWindowX - cursorData->width / 2 + offsetX;
rect.top = y - windowDescription->y - cursorData->height + 1 + offsetY; rect.top = y - inventoryWindowY - cursorData->height + 1 + offsetY;
rect.right = rect.left + cursorData->width - 1; rect.right = rect.left + cursorData->width - 1;
rect.bottom = rect.top + cursorData->height - 1; rect.bottom = rect.top + cursorData->height - 1;
@ -3090,7 +3096,7 @@ void inventoryWindowOpenContextMenu(int keyCode, int inventoryWindowType)
int x; int x;
int y; int y;
mouseGetPositionInWindow(gInventoryWindow, &x, &y); mouseGetPosition(&x, &y);
if (y - previousMouseY > 10 || previousMouseY - y > 10) { if (y - previousMouseY > 10 || previousMouseY - y > 10) {
if (y >= previousMouseY || menuItemIndex <= 0) { if (y >= previousMouseY || menuItemIndex <= 0) {
if (previousMouseY < y && menuItemIndex < actionMenuItemsLength - 1) { if (previousMouseY < y && menuItemIndex < actionMenuItemsLength - 1) {