Screen PointerUp should not be cancellable

This commit is contained in:
UnknownShadow200 2020-12-29 18:49:35 +11:00
parent 4d9c975b1f
commit 3758fc3e84
5 changed files with 35 additions and 32 deletions

View File

@ -496,6 +496,7 @@ void Screen_ContextLost(void* screen) {
int Screen_InputDown(void* screen, int key) { return key < KEY_F1 || key > KEY_F24; }
void Screen_InputUp(void* screen, int key) { }
void Screen_PointerUp(void* s, int id, int x, int y) { }
/*########################################################################################################################*

View File

@ -72,7 +72,7 @@ struct ScreenVTABLE {
void (*BuildMesh)(void* elem);
/* Returns non-zero if an input press is handled. */
int (*HandlesInputDown)(void* elem, int key);
/* Called when an input key or buttonm is released */
/* Called when an input key or button is released */
void (*OnInputUp)(void* elem, int key);
/* Returns non-zero if a key character press is handled. */
int (*HandlesKeyPress)(void* elem, char keyChar);
@ -80,8 +80,8 @@ struct ScreenVTABLE {
int (*HandlesTextChanged)(void* elem, const cc_string* str);
/* Returns non-zero if a pointer press is handled. */
int (*HandlesPointerDown)(void* elem, int id, int x, int y);
/* Returns non-zero if a pointer release is handled. */
int (*HandlesPointerUp)(void* elem, int id, int x, int y);
/* Called when a pointer is released. */
void (*OnPointerUp)(void* elem, int id, int x, int y);
/* Returns non-zero if a pointer movement is handled. */
int (*HandlesPointerMove)(void* elem, int id, int x, int y);
/* Returns non-zero if a mouse wheel scroll is handled. */
@ -126,6 +126,9 @@ int Screen_InputDown(void* screen, int key);
/* Default input up implementation for a screen */
/* (does nothing) */
void Screen_InputUp(void* screen, int key);
/* Default pointer release implementation for a screen */
/* (does nothing) */
void Screen_PointerUp(void* s, int id, int x, int y);
typedef void (*Widget_LeftClick)(void* screen, void* widget);
struct WidgetVTABLE {

View File

@ -1003,7 +1003,7 @@ static void OnPointerUp(void* obj, int idx) {
for (i = 0; i < Gui.ScreensCount; i++) {
s = Gui_Screens[i];
s->dirty = true;
if (s->VTABLE->HandlesPointerUp(s, 1 << idx, x, y)) return;
s->VTABLE->OnPointerUp(s, 1 << idx, x, y);
}
}

View File

@ -415,7 +415,7 @@ static const struct ScreenVTABLE ListScreen_VTABLE = {
ListScreen_Init, Screen_NullUpdate, ListScreen_Free,
ListScreen_Render, Screen_BuildMesh,
ListScreen_KeyDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, ListScreen_MouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, ListScreen_MouseScroll,
ListScreen_Layout, ListScreen_ContextLost, ListScreen_ContextRecreated
};
void ListScreen_Show(void) {
@ -545,7 +545,7 @@ static const struct ScreenVTABLE PauseScreen_VTABLE = {
PauseScreen_Init, Screen_NullUpdate, PauseScreen_Free,
MenuScreen_Render2, Screen_BuildMesh,
Screen_InputDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
PauseScreen_Layout, Screen_ContextLost, PauseScreen_ContextRecreated
};
void PauseScreen_Show(void) {
@ -596,7 +596,7 @@ static const struct ScreenVTABLE ClassicPauseScreen_VTABLE = {
ClassicPauseScreen_Init, Screen_NullUpdate, Screen_NullFunc,
MenuScreen_Render2, Screen_BuildMesh,
Screen_InputDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
PauseScreenBase_Layout, Screen_ContextLost, ClassicPauseScreen_ContextRecreated
};
void ClassicPauseScreen_Show(void) {
@ -723,7 +723,7 @@ static const struct ScreenVTABLE OptionsGroupScreen_VTABLE = {
OptionsGroupScreen_Init, Screen_NullUpdate, OptionsGroupScreen_Free,
MenuScreen_Render2, Screen_BuildMesh,
Screen_InputDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, OptionsGroupScreen_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, OptionsGroupScreen_PointerMove, Screen_TMouseScroll,
OptionsGroupScreen_Layout, OptionsGroupScreen_ContextLost, OptionsGroupScreen_ContextRecreated
};
void OptionsGroupScreen_Show(void) {
@ -984,7 +984,7 @@ static const struct ScreenVTABLE EditHotkeyScreen_VTABLE = {
EditHotkeyScreen_Init, EditHotkeyScreen_Update, Menu_CloseKeyboard,
EditHotkeyScreen_Render, Screen_BuildMesh,
EditHotkeyScreen_KeyDown, Screen_InputUp, EditHotkeyScreen_KeyPress, EditHotkeyScreen_TextChanged,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
EditHotkeyScreen_Layout, EditHotkeyScreen_ContextLost, EditHotkeyScreen_ContextRecreated
};
void EditHotkeyScreen_Show(struct HotkeyData original) {
@ -1188,7 +1188,7 @@ static const struct ScreenVTABLE GenLevelScreen_VTABLE = {
GenLevelScreen_Init, GenLevelScreen_Update, Menu_CloseKeyboard,
MenuScreen_Render2, Screen_BuildMesh,
GenLevelScreen_KeyDown, Screen_InputUp, GenLevelScreen_KeyPress, GenLevelScreen_TextChanged,
GenLevelScreen_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
GenLevelScreen_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
GenLevelScreen_Layout, GenLevelScreen_ContextLost, GenLevelScreen_ContextRecreated
};
void GenLevelScreen_Show(void) {
@ -1264,7 +1264,7 @@ static const struct ScreenVTABLE ClassicGenScreen_VTABLE = {
ClassicGenScreen_Init, Screen_NullUpdate, Screen_NullFunc,
MenuScreen_Render2, Screen_BuildMesh,
Screen_InputDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
ClassicGenScreen_Layout, Screen_ContextLost, ClassicGenScreen_ContextRecreated
};
void ClassicGenScreen_Show(void) {
@ -1543,7 +1543,7 @@ static const struct ScreenVTABLE SaveLevelScreen_VTABLE = {
SaveLevelScreen_Init, SaveLevelScreen_Update, Menu_CloseKeyboard,
SaveLevelScreen_Render, Screen_BuildMesh,
SaveLevelScreen_KeyDown, Screen_InputUp, SaveLevelScreen_KeyPress, SaveLevelScreen_TextChanged,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
SaveLevelScreen_Layout, SaveLevelScreen_ContextLost, SaveLevelScreen_ContextRecreated
};
void SaveLevelScreen_Show(void) {
@ -1946,7 +1946,7 @@ static const struct ScreenVTABLE KeyBindsScreen_VTABLE = {
KeyBindsScreen_Init, Screen_NullUpdate, Screen_NullFunc,
MenuScreen_Render2, Screen_BuildMesh,
KeyBindsScreen_KeyDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
KeyBindsScreen_Layout, KeyBindsScreen_ContextLost, KeyBindsScreen_ContextRecreated
};
@ -2214,7 +2214,7 @@ static const struct ScreenVTABLE MenuInputOverlay_VTABLE = {
MenuInputOverlay_Init, MenuInputOverlay_Update, MenuInputOverlay_Free,
MenuInputOverlay_Render, Screen_BuildMesh,
MenuInputOverlay_KeyDown, Screen_InputUp, MenuInputOverlay_KeyPress, MenuInputOverlay_TextChanged,
MenuInputOverlay_PointerDown, Screen_FPointer, MenuInputOverlay_PointerMove, Screen_TMouseScroll,
MenuInputOverlay_PointerDown, Screen_PointerUp, MenuInputOverlay_PointerMove, Screen_TMouseScroll,
MenuInputOverlay_Layout, MenuInputOverlay_ContextLost, MenuInputOverlay_ContextRecreated
};
void MenuInputOverlay_Show(struct MenuInputDesc* desc, const cc_string* value, MenuInputDone onDone, cc_bool screenMode) {
@ -2504,7 +2504,7 @@ static const struct ScreenVTABLE MenuOptionsScreen_VTABLE = {
MenuOptionsScreen_Init, Screen_NullUpdate, MenuOptionsScreen_Free,
MenuOptionsScreen_Render, MenuOptionsScreen_BuildMesh,
Screen_InputDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, MenuOptionsScreen_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, MenuOptionsScreen_PointerMove, Screen_TMouseScroll,
MenuOptionsScreen_Layout, MenuOptionsScreen_ContextLost, MenuOptionsScreen_ContextRecreated
};
void MenuOptionsScreen_Show(struct MenuInputDesc* descs, const char** descriptions, int descsCount, InitMenuOptions init) {
@ -3427,7 +3427,7 @@ static const struct ScreenVTABLE TexIdsOverlay_VTABLE = {
TexIdsOverlay_Init, Screen_NullUpdate, TexIdsOverlay_Free,
TexIdsOverlay_Render, TexIdsOverlay_BuildMesh,
TexIdsOverlay_KeyDown, Screen_InputUp, Screen_FKeyPress, Screen_FText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
TexIdsOverlay_Layout, TexIdsOverlay_ContextLost, TexIdsOverlay_ContextRecreated
};
void TexIdsOverlay_Show(void) {
@ -3509,7 +3509,7 @@ static const struct ScreenVTABLE UrlWarningOverlay_VTABLE = {
UrlWarningOverlay_Init, Screen_NullUpdate, Screen_NullFunc,
MenuScreen_Render2, Screen_BuildMesh,
Screen_InputDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
UrlWarningOverlay_Layout, Screen_ContextLost, UrlWarningOverlay_ContextRecreated
};
void UrlWarningOverlay_Show(const cc_string* url) {
@ -3683,7 +3683,7 @@ static const struct ScreenVTABLE TexPackOverlay_VTABLE = {
TexPackOverlay_Init, TexPackOverlay_Update, Screen_NullFunc,
MenuScreen_Render2, Screen_BuildMesh,
Screen_InputDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
TexPackOverlay_Layout, TexPackOverlay_ContextLost, TexPackOverlay_ContextRecreated
};
void TexPackOverlay_Show(const cc_string* url) {
@ -3825,7 +3825,7 @@ static const struct ScreenVTABLE TouchOnscreenScreen_VTABLE = {
TouchOnscreenScreen_Init, Screen_NullUpdate, Screen_NullFunc,
MenuScreen_Render2, Screen_BuildMesh,
Screen_InputDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
TouchOnscreenScreen_Layout, TouchOnscreenScreen_ContextLost, TouchOnscreenScreen_ContextRecreated
};
void TouchOnscreenScreen_Show(void) {
@ -3987,7 +3987,7 @@ static const struct ScreenVTABLE TouchCtrlsScreen_VTABLE = {
TouchCtrlsScreen_Init, Screen_NullUpdate, Screen_NullFunc,
MenuScreen_Render2, Screen_BuildMesh,
Screen_InputDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
TouchCtrlsScreen_Layout, TouchCtrlsScreen_ContextLost, TouchCtrlsScreen_ContextRecreated
};
void TouchCtrlsScreen_Show(void) {
@ -4081,7 +4081,7 @@ static const struct ScreenVTABLE TouchMoreScreen_VTABLE = {
TouchMoreScreen_Init, Screen_NullUpdate, Screen_NullFunc,
MenuScreen_Render2, Screen_BuildMesh,
Screen_InputDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
TouchMoreScreen_Layout, Screen_ContextLost, TouchMoreScreen_ContextRecreated
};
void TouchMoreScreen_Show(void) {

View File

@ -300,7 +300,7 @@ static const struct ScreenVTABLE HUDScreen_VTABLE = {
HUDScreen_Init, HUDScreen_Update, HUDScreen_Free,
HUDScreen_Render, HUDScreen_BuildMesh,
HUDScreen_KeyDown, HUDScreen_KeyUp, Screen_FKeyPress, Screen_FText,
HUDscreen_PointerDown, Screen_FPointer, Screen_FPointer, HUDscreen_MouseScroll,
HUDscreen_PointerDown, Screen_PointerUp, Screen_FPointer, HUDscreen_MouseScroll,
HUDScreen_Layout, HUDScreen_ContextLost, HUDScreen_ContextRecreated
};
void HUDScreen_Show(void) {
@ -714,7 +714,7 @@ static const struct ScreenVTABLE TabListOverlay_VTABLE = {
TabListOverlay_Init, Screen_NullUpdate, TabListOverlay_Free,
TabListOverlay_Render, TabListOverlay_BuildMesh,
Screen_FInput, TabListOverlay_KeyUp, Screen_FKeyPress, Screen_FText,
TabListOverlay_PointerDown, Screen_FPointer, Screen_FPointer, Screen_FMouseScroll,
TabListOverlay_PointerDown, Screen_PointerUp, Screen_FPointer, Screen_FMouseScroll,
TabListOverlay_Layout, TabListOverlay_ContextLost, TabListOverlay_ContextRecreated
};
void TabListOverlay_Show(void) {
@ -1292,7 +1292,7 @@ static const struct ScreenVTABLE ChatScreen_VTABLE = {
ChatScreen_Init, Screen_NullUpdate, ChatScreen_Free,
ChatScreen_Render, ChatScreen_BuildMesh,
ChatScreen_KeyDown, ChatScreen_KeyUp, ChatScreen_KeyPress, ChatScreen_TextChanged,
ChatScreen_PointerDown, Screen_FPointer, Screen_FPointer, ChatScreen_MouseScroll,
ChatScreen_PointerDown, Screen_PointerUp, Screen_FPointer, ChatScreen_MouseScroll,
ChatScreen_Layout, ChatScreen_ContextLost, ChatScreen_ContextRecreated
};
void ChatScreen_Show(void) {
@ -1448,9 +1448,9 @@ static int InventoryScreen_PointerDown(void* screen, int id, int x, int y) {
return true;
}
static int InventoryScreen_PointerUp(void* screen, int id, int x, int y) {
static void InventoryScreen_PointerUp(void* screen, int id, int x, int y) {
struct InventoryScreen* s = (struct InventoryScreen*)screen;
return Elem_HandlesPointerUp(&s->table, id, x, y);
Elem_HandlesPointerUp(&s->table, id, x, y);
}
static int InventoryScreen_PointerMove(void* screen, int id, int x, int y) {
@ -1655,7 +1655,7 @@ static const struct ScreenVTABLE LoadingScreen_VTABLE = {
LoadingScreen_Init, Screen_NullUpdate, LoadingScreen_Free,
LoadingScreen_Render, LoadingScreen_BuildMesh,
Screen_TInput, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Screen_TPointer, Screen_FPointer, Screen_TPointer, Screen_TMouseScroll,
Screen_TPointer, Screen_PointerUp, Screen_TPointer, Screen_TMouseScroll,
LoadingScreen_Layout, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated
};
void LoadingScreen_Show(const cc_string* title, const cc_string* message) {
@ -1730,7 +1730,7 @@ static const struct ScreenVTABLE GeneratingScreen_VTABLE = {
GeneratingScreen_Init, GeneratingScreen_Update, GeneratingScreen_Free,
GeneratingScreen_Render, LoadingScreen_BuildMesh,
Screen_TInput, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Screen_TPointer, Screen_FPointer, Screen_FPointer, Screen_TMouseScroll,
Screen_TPointer, Screen_PointerUp, Screen_FPointer, Screen_TMouseScroll,
LoadingScreen_Layout, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated
};
void GeneratingScreen_Show(void) {
@ -1874,7 +1874,7 @@ static const struct ScreenVTABLE DisconnectScreen_VTABLE = {
DisconnectScreen_Init, DisconnectScreen_Update, DisconnectScreen_Free,
DisconnectScreen_Render, Screen_BuildMesh,
Screen_InputDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
Menu_PointerDown, Screen_FPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
DisconnectScreen_Layout, DisconnectScreen_ContextLost, DisconnectScreen_ContextRecreated
};
void DisconnectScreen_Show(const cc_string* title, const cc_string* message) {
@ -2081,7 +2081,7 @@ static int TouchScreen_PointerDown(void* screen, int id, int x, int y) {
return i >= 0;
}
static int TouchScreen_PointerUp(void* screen, int id, int x, int y) {
static void TouchScreen_PointerUp(void* screen, int id, int x, int y) {
struct TouchScreen* s = (struct TouchScreen*)screen;
int i;
//Chat_Add1("POINTER UP: %i", &id);
@ -2095,9 +2095,8 @@ static int TouchScreen_PointerUp(void* screen, int id, int x, int y) {
Input_Set(KeyBinds[s->descs[i].bind], false);
}
s->btns[i].active &= ~id;
return true;
return;
}
return false;
}
static void TouchScreen_Layout(void* screen) {