mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-15 02:25:32 -04:00
Screen PointerUp should not be cancellable
This commit is contained in:
parent
4d9c975b1f
commit
3758fc3e84
@ -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) { }
|
||||
|
||||
|
||||
/*########################################################################################################################*
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
34
src/Menus.c
34
src/Menus.c
@ -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) {
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user