mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-15 02:25:32 -04:00
WIP changes
This commit is contained in:
parent
5072b8566d
commit
08cf8f5805
@ -194,6 +194,7 @@ static void Gui_AddCore(struct Screen* s, int priority) {
|
||||
|
||||
s->VTABLE->Init(s);
|
||||
s->VTABLE->ContextRecreated(s);
|
||||
|
||||
/* for selecting active button etc */
|
||||
s->VTABLE->HandlesMouseMove(s, Mouse_X, Mouse_Y);
|
||||
}
|
||||
|
18
src/Gui.h
18
src/Gui.h
@ -42,9 +42,9 @@ struct ScreenVTABLE {
|
||||
bool (*HandlesKeyDown)(void* elem, Key key);
|
||||
bool (*HandlesKeyUp)(void* elem, Key key);
|
||||
bool (*HandlesKeyPress)(void* elem, char keyChar);
|
||||
bool (*HandlesMouseDown)(void* elem, int x, int y, MouseButton btn);
|
||||
bool (*HandlesMouseUp)(void* elem, int x, int y, MouseButton btn);
|
||||
bool (*HandlesMouseMove)(void* elem, int x, int y);
|
||||
bool (*HandlesPointerDown)(void* elem, int id, int x, int y);
|
||||
bool (*HandlesPointerUp)(void* elem, int id, int x, int y);
|
||||
bool (*HandlesPointerMove)(void* elem, int id, int x, int y);
|
||||
bool (*HandlesMouseScroll)(void* elem, float delta);
|
||||
void (*OnResize)(void* elem);
|
||||
Event_Void_Callback ContextLost;
|
||||
@ -66,10 +66,10 @@ struct WidgetVTABLE {
|
||||
void (*Free)(void* elem);
|
||||
bool (*HandlesKeyDown)(void* elem, Key key);
|
||||
bool (*HandlesKeyUp)(void* elem, Key key);
|
||||
bool (*HandlesMouseDown)(void* elem, int x, int y, MouseButton btn);
|
||||
bool (*HandlesMouseUp)(void* elem, int x, int y, MouseButton btn);
|
||||
bool (*HandlesMouseMove)(void* elem, int x, int y);
|
||||
bool (*HandlesMouseScroll)(void* elem, float delta);
|
||||
bool (*HandlesPointerDown)(void* elem, int id, int x, int y);
|
||||
bool (*HandlesPointerUp)(void* elem, int id, int x, int y);
|
||||
bool (*HandlesPointerMove)(void* elem, int id, int x, int y);
|
||||
void (*Reposition)(void* elem);
|
||||
};
|
||||
#define Widget_Layout const struct WidgetVTABLE* VTABLE; \
|
||||
@ -165,10 +165,12 @@ void TextAtlas_AddInt(struct TextAtlas* atlas, int value, VertexP3fT2fC4b** vert
|
||||
#define Elem_HandlesKeyDown(elem, key) (elem)->VTABLE->HandlesKeyDown(elem, key)
|
||||
#define Elem_HandlesKeyUp(elem, key) (elem)->VTABLE->HandlesKeyUp(elem, key)
|
||||
#define Elem_HandlesMouseDown(elem, x, y, btn) (elem)->VTABLE->HandlesMouseDown(elem, x, y, btn)
|
||||
#define Elem_HandlesMouseUp(elem, x, y, btn) (elem)->VTABLE->HandlesMouseUp(elem, x, y, btn)
|
||||
#define Elem_HandlesMouseMove(elem, x, y) (elem)->VTABLE->HandlesMouseMove(elem, x, y)
|
||||
#define Elem_HandlesMouseScroll(elem, delta) (elem)->VTABLE->HandlesMouseScroll(elem, delta)
|
||||
|
||||
#define Elem_HandlesPointerDown(elem, id, x, y) (elem)->VTABLE->HandlesPointerDown(elem, id, x, y)
|
||||
#define Elem_HandlesPointerUp(elem, id, x, y) (elem)->VTABLE->HandlesPointerUp(elem, id, x, y)
|
||||
#define Elem_HandlesPointerMove(elem, id, x, y) (elem)->VTABLE->HandlesPointerMove(elem, id, x, y)
|
||||
|
||||
#define Widget_Reposition(widget) (widget)->VTABLE->Reposition(widget);
|
||||
#define Elem_TryFree(elem) if ((elem)->VTABLE) { Elem_Free(elem); }
|
||||
#endif
|
||||
|
@ -78,7 +78,6 @@ extern float Mouse_Wheel;
|
||||
|
||||
/* Data for mouse and touch */
|
||||
extern struct Pointer {
|
||||
long id;
|
||||
int x, y;
|
||||
} Pointers[INPUT_MAX_POINTERS];
|
||||
/* X and Y coordinates of the mouse. Use Mouse_SetPosition to change. */
|
||||
|
@ -457,31 +457,31 @@ static void HandleMouseWheel(void* obj, float delta) {
|
||||
|
||||
static void HandlePointerMove(void* obj, int idx, int xDelta, int yDelta) {
|
||||
struct Screen* s;
|
||||
int i;
|
||||
int i, x = Pointers[idx].x, y = Pointers[idx].y;
|
||||
|
||||
for (i = 0; i < Gui_ScreensCount; i++) {
|
||||
s = Gui_Screens[i];
|
||||
if (s->VTABLE->HandlesMouseMove(s, Pointers[idx].x, Pointers[idx].y)) return;
|
||||
if (s->VTABLE->HandlesPointerMove(s, 1 << idx, x, y)) return;
|
||||
}
|
||||
}
|
||||
|
||||
static void HandlePointerDown(void* obj, int idx) {
|
||||
struct Screen* s;
|
||||
int i;
|
||||
int i, x = Pointers[idx].x, y = Pointers[idx].y;
|
||||
|
||||
for (i = 0; i < Gui_ScreensCount; i++) {
|
||||
s = Gui_Screens[i];
|
||||
if (s->VTABLE->HandlesMouseDown(s, Pointers[idx].x, Pointers[idx].y, 0)) return;
|
||||
if (s->VTABLE->HandlesPointerDown(s, 1 << idx, x, y)) return;
|
||||
}
|
||||
}
|
||||
|
||||
static void HandlePointerUp(void* obj, int idx) {
|
||||
struct Screen* s;
|
||||
int i;
|
||||
int i, x = Pointers[idx].x, y = Pointers[idx].y;
|
||||
|
||||
for (i = 0; i < Gui_ScreensCount; i++) {
|
||||
s = Gui_Screens[i];
|
||||
if (s->VTABLE->HandlesMouseUp(s, Pointers[idx].x, Pointers[idx].y, 0)) return;
|
||||
if (s->VTABLE->HandlesPointerUp(s, 1 << idx, x, y)) return;
|
||||
}
|
||||
}
|
||||
|
||||
|
47
src/Menus.c
47
src/Menus.c
@ -111,7 +111,7 @@ static void Menu_RenderBounds(void) {
|
||||
Gfx_Draw2DGradient(0, 0, Window_Width, Window_Height, topCol, bottomCol);
|
||||
}
|
||||
|
||||
static int Menu_DoMouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
static int Menu_DoPointerDown(void* screen, int id, int x, int y) {
|
||||
struct Screen* s = (struct Screen*)screen;
|
||||
struct Widget** widgets = s->widgets;
|
||||
int i, count = s->numWidgets;
|
||||
@ -125,21 +125,22 @@ static int Menu_DoMouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
if (w->MenuClick) {
|
||||
w->MenuClick(s, w);
|
||||
} else {
|
||||
Elem_HandlesMouseDown(w, x, y, btn);
|
||||
Elem_HandlesPointerDown(w, id, x, y);
|
||||
}
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
static bool Menu_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
Menu_DoMouseDown(screen, x, y, btn); return true;
|
||||
static bool Menu_PointerDown(void* screen, int id, int x, int y) {
|
||||
Menu_DoPointerDown(screen, id, x, y); return true;
|
||||
}
|
||||
|
||||
static int Menu_DoMouseMove(void* screen, int x, int y) {
|
||||
static int Menu_DoPointerMove(void* screen, int id, int x, int y) {
|
||||
struct Screen* s = (struct Screen*)screen;
|
||||
struct Widget** widgets = s->widgets;
|
||||
int i, count = s->numWidgets;
|
||||
|
||||
/* TODO: id mask */
|
||||
for (i = 0; i < count; i++) {
|
||||
struct Widget* w = widgets[i];
|
||||
if (w) w->active = false;
|
||||
@ -155,8 +156,8 @@ static int Menu_DoMouseMove(void* screen, int x, int y) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
static bool Menu_MouseMove(void* screen, int x, int y) {
|
||||
Menu_DoMouseMove(screen, x, y); return true;
|
||||
static bool Menu_PointerMove(void* screen, int id, int x, int y) {
|
||||
Menu_DoPointerMove(screen, id, x, y); return true;
|
||||
}
|
||||
|
||||
|
||||
@ -429,7 +430,7 @@ static void ListScreen_ContextRecreated(void* screen) {
|
||||
static const struct ScreenVTABLE ListScreen_VTABLE = {
|
||||
ListScreen_Init, ListScreen_Render, ListScreen_Free,
|
||||
ListScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, Menu_MouseMove, ListScreen_MouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, ListScreen_MouseScroll,
|
||||
Menu_OnResize, ListScreen_ContextLost, ListScreen_ContextRecreated
|
||||
};
|
||||
void ListScreen_Show(void) {
|
||||
@ -547,7 +548,7 @@ static void PauseScreen_Free(void* screen) {
|
||||
static const struct ScreenVTABLE PauseScreen_VTABLE = {
|
||||
PauseScreen_Init, MenuScreen_Render, PauseScreen_Free,
|
||||
MenuScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, Menu_MouseMove, Screen_TMouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Menu_OnResize, Menu_ContextLost, PauseScreen_ContextRecreated
|
||||
};
|
||||
void PauseScreen_Show(void) {
|
||||
@ -647,9 +648,9 @@ static void OptionsGroupScreen_Free(void* screen) {
|
||||
Event_UnregisterVoid(&UserEvents.HackPermissionsChanged, s, OptionsGroupScreen_CheckHacksAllowed);
|
||||
}
|
||||
|
||||
static bool OptionsGroupScreen_MouseMove(void* screen, int x, int y) {
|
||||
static bool OptionsGroupScreen_PointerMove(void* screen, int id, int x, int y) {
|
||||
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
|
||||
int i = Menu_DoMouseMove(s, x, y);
|
||||
int i = Menu_DoPointerMove(s, id, x, y);
|
||||
if (i == -1 || i == s->selectedI) return true;
|
||||
if (i >= Array_Elems(optsGroup_descs)) return true;
|
||||
|
||||
@ -661,7 +662,7 @@ static bool OptionsGroupScreen_MouseMove(void* screen, int x, int y) {
|
||||
static const struct ScreenVTABLE OptionsGroupScreen_VTABLE = {
|
||||
OptionsGroupScreen_Init, MenuScreen_Render, OptionsGroupScreen_Free,
|
||||
MenuScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, OptionsGroupScreen_MouseMove, Screen_TMouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, OptionsGroupScreen_PointerMove, Screen_TMouseScroll,
|
||||
Menu_OnResize, OptionsGroupScreen_ContextLost, OptionsGroupScreen_ContextRecreated
|
||||
};
|
||||
void OptionsGroupScreen_Show(void) {
|
||||
@ -882,7 +883,7 @@ static void EditHotkeyScreen_Init(void* screen) {
|
||||
static const struct ScreenVTABLE EditHotkeyScreen_VTABLE = {
|
||||
EditHotkeyScreen_Init, EditHotkeyScreen_Render, Menu_NullFunc,
|
||||
EditHotkeyScreen_KeyDown, Screen_TKey, EditHotkeyScreen_KeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, Menu_MouseMove, Screen_TMouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Menu_OnResize, EditHotkeyScreen_ContextLost, EditHotkeyScreen_ContextRecreated
|
||||
};
|
||||
void EditHotkeyScreen_Show(struct HotkeyData original) {
|
||||
@ -1049,7 +1050,7 @@ static void GenLevelScreen_Init(void* screen) {
|
||||
static const struct ScreenVTABLE GenLevelScreen_VTABLE = {
|
||||
GenLevelScreen_Init, MenuScreen_Render, Menu_NullFunc,
|
||||
GenLevelScreen_KeyDown, Screen_TKey, GenLevelScreen_KeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, Menu_MouseMove, Screen_TMouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Menu_OnResize, GenLevelScreen_ContextLost, GenLevelScreen_ContextRecreated
|
||||
};
|
||||
void GenLevelScreen_Show(void) {
|
||||
@ -1114,7 +1115,7 @@ static void ClassicGenScreen_Init(void* screen) {
|
||||
static const struct ScreenVTABLE ClassicGenScreen_VTABLE = {
|
||||
ClassicGenScreen_Init, MenuScreen_Render, Menu_NullFunc,
|
||||
MenuScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, Menu_MouseMove, Screen_TMouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Menu_OnResize, Menu_ContextLost, ClassicGenScreen_ContextRecreated
|
||||
};
|
||||
void ClassicGenScreen_Show(void) {
|
||||
@ -1284,7 +1285,7 @@ static void SaveLevelScreen_Init(void* screen) {
|
||||
static const struct ScreenVTABLE SaveLevelScreen_VTABLE = {
|
||||
SaveLevelScreen_Init, SaveLevelScreen_Render, Menu_NullFunc,
|
||||
SaveLevelScreen_KeyDown, Screen_TKey, SaveLevelScreen_KeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, Menu_MouseMove, Screen_TMouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Menu_OnResize, SaveLevelScreen_ContextLost, SaveLevelScreen_ContextRecreated
|
||||
};
|
||||
void SaveLevelScreen_Show(void) {
|
||||
@ -1632,7 +1633,7 @@ static void KeyBindingsScreen_Init(void* screen) {
|
||||
static const struct ScreenVTABLE KeyBindingsScreen_VTABLE = {
|
||||
KeyBindingsScreen_Init, MenuScreen_Render, Menu_NullFunc,
|
||||
KeyBindingsScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, Menu_MouseMove, Screen_TMouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Menu_OnResize, KeyBindingsScreen_ContextLost, KeyBindingsScreen_ContextRecreated
|
||||
};
|
||||
static void KeyBindingsScreen_Show(int bindsCount, const cc_uint8* binds, const char** descs, InitKeyBindings doInit) {
|
||||
@ -1888,9 +1889,9 @@ static bool MenuOptionsScreen_KeyDown(void* screen, Key key) {
|
||||
return MenuScreen_KeyDown(s, key);
|
||||
}
|
||||
|
||||
static bool MenuOptionsScreen_MouseMove(void* screen, int x, int y) {
|
||||
static bool MenuOptionsScreen_PointerMove(void* screen, int id, int x, int y) {
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
int i = Menu_DoMouseMove(s, x, y);
|
||||
int i = Menu_DoPointerMove(s, id, x, y);
|
||||
if (i == -1 || i == s->selectedI) return true;
|
||||
if (!s->descriptions || i >= s->descriptionsCount) return true;
|
||||
|
||||
@ -2073,7 +2074,7 @@ static void MenuOptionsScreen_ContextRecreated(void* screen) {
|
||||
static const struct ScreenVTABLE MenuOptionsScreen_VTABLE = {
|
||||
MenuOptionsScreen_Init, MenuOptionsScreen_Render, MenuOptionsScreen_Free,
|
||||
MenuOptionsScreen_KeyDown, Screen_TKey, MenuOptionsScreen_KeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, MenuOptionsScreen_MouseMove, Screen_TMouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, MenuOptionsScreen_PointerMove, Screen_TMouseScroll,
|
||||
MenuOptionsScreen_OnResize, MenuOptionsScreen_ContextLost, MenuOptionsScreen_ContextRecreated
|
||||
};
|
||||
void MenuOptionsScreen_Show(struct MenuInputDesc* descs, const char** descriptions, int descsCount, InitMenuOptions init) {
|
||||
@ -2910,7 +2911,7 @@ static bool TexIdsOverlay_KeyDown(void* screen, Key key) {
|
||||
static const struct ScreenVTABLE TexIdsOverlay_VTABLE = {
|
||||
TexIdsOverlay_Init, TexIdsOverlay_Render, Menu_NullFunc,
|
||||
TexIdsOverlay_KeyDown, Screen_FKey, Screen_FKeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, Menu_MouseMove, Screen_TMouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Menu_OnResize, TexIdsOverlay_ContextLost, TexIdsOverlay_ContextRecreated
|
||||
};
|
||||
void TexIdsOverlay_Show(void) {
|
||||
@ -2977,7 +2978,7 @@ static void UrlWarningOverlay_Init(void* screen) {
|
||||
static const struct ScreenVTABLE UrlWarningOverlay_VTABLE = {
|
||||
UrlWarningOverlay_Init, MenuScreen_Render, Menu_NullFunc,
|
||||
Screen_TKey, Screen_TKey, Screen_TKeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, Menu_MouseMove, Screen_TMouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Menu_OnResize, Menu_ContextLost, UrlWarningOverlay_ContextRecreated
|
||||
};
|
||||
void UrlWarningOverlay_Show(const String* url) {
|
||||
@ -3126,7 +3127,7 @@ static void TexPackOverlay_Init(void* screen) {
|
||||
static const struct ScreenVTABLE TexPackOverlay_VTABLE = {
|
||||
TexPackOverlay_Init, TexPackOverlay_Render, Menu_NullFunc,
|
||||
Screen_TKey, Screen_TKey, Screen_TKeyPress,
|
||||
Menu_MouseDown, Screen_TMouse, Menu_MouseMove, Screen_TMouseScroll,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Menu_OnResize, TexPackOverlay_ContextLost, TexPackOverlay_ContextRecreated
|
||||
};
|
||||
void TexPackOverlay_Show(const String* url) {
|
||||
|
@ -49,17 +49,17 @@ struct HUDScreen {
|
||||
struct Texture chatTextures[TEXTGROUPWIDGET_MAX_LINES];
|
||||
};
|
||||
|
||||
bool Screen_FKey(void* elem, int key) { return false; }
|
||||
bool Screen_FKeyPress(void* elem, char keyChar) { return false; }
|
||||
bool Screen_FMouseScroll(void* elem, float delta) { return false; }
|
||||
bool Screen_FMouse(void* elem, int x, int y, int btn) { return false; }
|
||||
bool Screen_FMouseMove(void* elem, int x, int y) { return false; }
|
||||
bool Screen_FKey(void* s, int key) { return false; }
|
||||
bool Screen_FKeyPress(void* s, char keyChar) { return false; }
|
||||
bool Screen_FMouseScroll(void* s, float delta) { return false; }
|
||||
bool Screen_FPointer(void* s, int id, int x, int y) { return false; }
|
||||
bool Screen_FPointerMove(void* s, int id, int x, int y) { return false; }
|
||||
|
||||
bool Screen_TKeyPress(void* elem, char keyChar) { return true; }
|
||||
bool Screen_TKey(void* s, int key) { return true; }
|
||||
bool Screen_TMouseScroll(void* screen, float delta) { return true; }
|
||||
bool Screen_TMouse(void* screen, int x, int y, int btn) { return true; }
|
||||
bool Screen_TMouseMove(void* elem, int x, int y) { return true; }
|
||||
bool Screen_TKeyPress(void* s, char keyChar) { return true; }
|
||||
bool Screen_TKey(void* s, int key) { return true; }
|
||||
bool Screen_TMouseScroll(void* s, float delta) { return true; }
|
||||
bool Screen_TPointer(void* s, int id, int x, int y) { return true; }
|
||||
bool Screen_TPointerMove(void* s, int id, int x, int y) { return true; }
|
||||
static void Screen_NullFunc(void* screen) { }
|
||||
|
||||
CC_NOINLINE static bool IsOnlyHudActive(void) {
|
||||
@ -176,14 +176,15 @@ static bool InventoryScreen_KeyUp(void* screen, Key key) {
|
||||
return Elem_HandlesKeyUp(&hud->hotbar, key);
|
||||
}
|
||||
|
||||
static bool InventoryScreen_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
static bool InventoryScreen_PointerDown(void* screen, int id, int x, int y) {
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
struct TableWidget* table = &s->table;
|
||||
struct HUDScreen* hud = (struct HUDScreen*)Gui_HUD;
|
||||
bool handled, hotbar;
|
||||
|
||||
if (table->scroll.draggingMouse || Elem_HandlesMouseDown(&hud->hotbar, x, y, btn)) return true;
|
||||
handled = Elem_HandlesMouseDown(table, x, y, btn);
|
||||
if (table->scroll.draggingId == id) return true;
|
||||
if (Elem_HandlesPointerDown(&hud->hotbar, id, x, y)) return true;
|
||||
handled = Elem_HandlesPointerDown(table, id, x, y);
|
||||
|
||||
if (!handled || table->pendingClose) {
|
||||
hotbar = Key_IsControlPressed() || Key_IsShiftPressed();
|
||||
@ -192,31 +193,28 @@ static bool InventoryScreen_MouseDown(void* screen, int x, int y, MouseButton bt
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool InventoryScreen_MouseUp(void* screen, int x, int y, MouseButton btn) {
|
||||
static bool InventoryScreen_PointerUp(void* screen, int id, int x, int y) {
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
struct TableWidget* table = &s->table;
|
||||
return Elem_HandlesMouseUp(table, x, y, btn);
|
||||
return Elem_HandlesPointerUp(&s->table, id, x, y);
|
||||
}
|
||||
|
||||
static bool InventoryScreen_MouseMove(void* screen, int x, int y) {
|
||||
static bool InventoryScreen_PointerMove(void* screen, int id, int x, int y) {
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
struct TableWidget* table = &s->table;
|
||||
return Elem_HandlesMouseMove(table, x, y);
|
||||
return Elem_HandlesPointerMove(&s->table, id, x, y);
|
||||
}
|
||||
|
||||
static bool InventoryScreen_MouseScroll(void* screen, float delta) {
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
struct TableWidget* table = &s->table;
|
||||
|
||||
bool hotbar = Key_IsAltPressed() || Key_IsControlPressed() || Key_IsShiftPressed();
|
||||
if (hotbar) return false;
|
||||
return Elem_HandlesMouseScroll(table, delta);
|
||||
return Elem_HandlesMouseScroll(&s->table, delta);
|
||||
}
|
||||
|
||||
static const struct ScreenVTABLE InventoryScreen_VTABLE = {
|
||||
InventoryScreen_Init, InventoryScreen_Render, InventoryScreen_Free,
|
||||
InventoryScreen_KeyDown, InventoryScreen_KeyUp, Screen_TKeyPress,
|
||||
InventoryScreen_MouseDown, InventoryScreen_MouseUp, InventoryScreen_MouseMove, InventoryScreen_MouseScroll,
|
||||
InventoryScreen_Init, InventoryScreen_Render, InventoryScreen_Free,
|
||||
InventoryScreen_KeyDown, InventoryScreen_KeyUp, Screen_TKeyPress,
|
||||
InventoryScreen_PointerDown, InventoryScreen_PointerUp, InventoryScreen_PointerMove, InventoryScreen_MouseScroll,
|
||||
InventoryScreen_OnResize, InventoryScreen_ContextLost, InventoryScreen_ContextRecreated
|
||||
};
|
||||
void InventoryScreen_Show(void) {
|
||||
@ -407,7 +405,7 @@ static void StatusScreen_Render(void* screen, double delta) {
|
||||
static const struct ScreenVTABLE StatusScreen_VTABLE = {
|
||||
Screen_NullFunc, StatusScreen_Render, Screen_NullFunc,
|
||||
Screen_FKey, Screen_FKey, Screen_FKeyPress,
|
||||
Screen_FMouse, Screen_FMouse, Screen_FMouseMove, Screen_FMouseScroll,
|
||||
Screen_FPointer, Screen_FPointer, Screen_FPointerMove, Screen_FMouseScroll,
|
||||
Screen_NullFunc, StatusScreen_ContextLost, StatusScreen_ContextRecreated
|
||||
};
|
||||
void StatusScreen_Show(void) {
|
||||
@ -570,7 +568,7 @@ CC_NOINLINE static void LoadingScreen_ShowCommon(const String* title, const Stri
|
||||
static const struct ScreenVTABLE LoadingScreen_VTABLE = {
|
||||
LoadingScreen_Init, LoadingScreen_Render, LoadingScreen_Free,
|
||||
Screen_TKey, Screen_TKey, Screen_TKeyPress,
|
||||
Screen_TMouse, Screen_TMouse, Screen_TMouseMove, Screen_TMouseScroll,
|
||||
Screen_TPointer, Screen_TPointer, Screen_TPointerMove, Screen_TMouseScroll,
|
||||
LoadingScreen_OnResize, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated
|
||||
};
|
||||
void LoadingScreen_Show(const String* title, const String* message) {
|
||||
@ -640,7 +638,7 @@ static void GeneratingScreen_Render(void* screen, double delta) {
|
||||
static const struct ScreenVTABLE GeneratingScreen_VTABLE = {
|
||||
GeneratingScreen_Init, GeneratingScreen_Render, LoadingScreen_Free,
|
||||
Screen_TKey, Screen_TKey, Screen_TKeyPress,
|
||||
Screen_TMouse, Screen_TMouse, Screen_FMouseMove, Screen_TMouseScroll,
|
||||
Screen_TPointer, Screen_TPointer, Screen_FPointerMove, Screen_TMouseScroll,
|
||||
LoadingScreen_OnResize, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated
|
||||
};
|
||||
void GeneratingScreen_Show(void) {
|
||||
@ -1086,7 +1084,7 @@ static bool HUDScreen_MouseScroll(void* screen, float delta) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HUDScreen_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
static bool HUDScreen_PointerDown(void* screen, int id, int x, int y) {
|
||||
String text; char textBuffer[STRING_SIZE * 4];
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
int height, chatY;
|
||||
@ -1110,11 +1108,11 @@ static bool HUDScreen_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
|
||||
if (!Widget_Contains(&s->chat, x, y)) {
|
||||
if (s->altText.active && Widget_Contains(&s->altText, x, y)) {
|
||||
Elem_HandlesMouseDown(&s->altText, x, y, btn);
|
||||
Elem_HandlesPointerDown(&s->altText, id, x, y);
|
||||
HUDScreen_UpdateChatYOffsets(s);
|
||||
return true;
|
||||
}
|
||||
Elem_HandlesMouseDown(&s->input.base, x, y, btn);
|
||||
Elem_HandlesPointerDown(&s->input.base, id, x, y);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1188,10 +1186,10 @@ static void HUDScreen_Free(void* screen) {
|
||||
}
|
||||
|
||||
static const struct ScreenVTABLE HUDScreen_VTABLE = {
|
||||
HUDScreen_Init, HUDScreen_Render, HUDScreen_Free,
|
||||
HUDScreen_KeyDown, HUDScreen_KeyUp, HUDScreen_KeyPress,
|
||||
HUDScreen_MouseDown, Screen_FMouse, Screen_FMouseMove, HUDScreen_MouseScroll,
|
||||
HUDScreen_OnResize, HUDScreen_ContextLost, HUDScreen_ContextRecreated
|
||||
HUDScreen_Init, HUDScreen_Render, HUDScreen_Free,
|
||||
HUDScreen_KeyDown, HUDScreen_KeyUp, HUDScreen_KeyPress,
|
||||
HUDScreen_PointerDown, Screen_FPointer, Screen_FPointerMove, HUDScreen_MouseScroll,
|
||||
HUDScreen_OnResize, HUDScreen_ContextLost, HUDScreen_ContextRecreated
|
||||
};
|
||||
void HUDScreen_Show(void) {
|
||||
struct HUDScreen* s = &HUDScreen_Instance;
|
||||
@ -1350,7 +1348,7 @@ static void DisconnectScreen_OnResize(void* screen) {
|
||||
|
||||
static bool DisconnectScreen_KeyDown(void* s, Key key) { return key < KEY_F1 || key > KEY_F35; }
|
||||
|
||||
static bool DisconnectScreen_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
static bool DisconnectScreen_PointerDown(void* screen, int id, int x, int y) {
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
struct ButtonWidget* w = &s->reconnect;
|
||||
|
||||
@ -1371,10 +1369,10 @@ static bool DisconnectScreen_MouseMove(void* screen, int x, int y) {
|
||||
}
|
||||
|
||||
static const struct ScreenVTABLE DisconnectScreen_VTABLE = {
|
||||
DisconnectScreen_Init, DisconnectScreen_Render, DisconnectScreen_Free,
|
||||
DisconnectScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
|
||||
DisconnectScreen_MouseDown, Screen_TMouse, DisconnectScreen_MouseMove, Screen_TMouseScroll,
|
||||
DisconnectScreen_OnResize, DisconnectScreen_ContextLost, DisconnectScreen_ContextRecreated
|
||||
DisconnectScreen_Init, DisconnectScreen_Render, DisconnectScreen_Free,
|
||||
DisconnectScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
|
||||
DisconnectScreen_PointerDown, Screen_TPointer, DisconnectScreen_MouseMove, Screen_TMouseScroll,
|
||||
DisconnectScreen_OnResize, DisconnectScreen_ContextLost, DisconnectScreen_ContextRecreated
|
||||
};
|
||||
void DisconnectScreen_Show(const String* title, const String* message) {
|
||||
static const String kick = String_FromConst("Kicked ");
|
||||
|
@ -8,18 +8,18 @@ struct Screen;
|
||||
struct Widget;
|
||||
|
||||
/* These always return false */
|
||||
bool Screen_FKey(void* elem, int key);
|
||||
bool Screen_FKeyPress(void* elem, char keyChar);
|
||||
bool Screen_FMouseScroll(void* elem, float delta);
|
||||
bool Screen_FMouse(void* elem, int x, int y, int btn);
|
||||
bool Screen_FMouseMove(void* elem, int x, int y);
|
||||
bool Screen_FKey(void* s, int key);
|
||||
bool Screen_FKeyPress(void* s, char keyChar);
|
||||
bool Screen_FMouseScroll(void* s, float delta);
|
||||
bool Screen_FPointer(void* s, int id, int x, int y);
|
||||
bool Screen_FPointerMove(void* s, int id, int x, int y);
|
||||
|
||||
/* These always return true */
|
||||
bool Screen_TKeyPress(void* elem, char keyChar);
|
||||
bool Screen_TKeyPress(void* s, char keyChar);
|
||||
bool Screen_TKey(void* s, int key);
|
||||
bool Screen_TMouseScroll(void* screen, float delta);
|
||||
bool Screen_TMouse(void* screen, int x, int y, int btn);
|
||||
bool Screen_TMouseMove(void* elem, int x, int y);
|
||||
bool Screen_TMouseScroll(void* s, float delta);
|
||||
bool Screen_TPointer(void* s, int id, int x, int y);
|
||||
bool Screen_TPointerMove(void* s, int id, int x, int y);
|
||||
|
||||
void InventoryScreen_Show(void);
|
||||
void StatusScreen_Show(void);
|
||||
|
102
src/Widgets.c
102
src/Widgets.c
@ -20,9 +20,9 @@
|
||||
|
||||
#define Widget_UV(u1,v1, u2,v2) Tex_UV(u1/256.0f,v1/256.0f, u2/256.0f,v2/256.0f)
|
||||
static void Widget_NullFunc(void* widget) { }
|
||||
static bool Widget_Mouse(void* elem, int x, int y, MouseButton btn) { return false; }
|
||||
static bool Widget_Pointer(void* elem, int id, int x, int y) { return false; }
|
||||
static bool Widget_Key(void* elem, Key key) { return false; }
|
||||
static bool Widget_MouseMove(void* elem, int x, int y) { return false; }
|
||||
static bool Widget_PointerMove(void* elem, int id, int x, int y) { return false; }
|
||||
static bool Widget_MouseScroll(void* elem, float delta) { return false; }
|
||||
|
||||
/*########################################################################################################################*
|
||||
@ -46,8 +46,8 @@ static void TextWidget_Reposition(void* widget) {
|
||||
|
||||
static const struct WidgetVTABLE TextWidget_VTABLE = {
|
||||
Widget_NullFunc, TextWidget_Render, TextWidget_Free,
|
||||
Widget_Key, Widget_Key,
|
||||
Widget_Mouse, Widget_Mouse, Widget_MouseMove, Widget_MouseScroll,
|
||||
Widget_Key, Widget_Key, Widget_MouseScroll,
|
||||
Widget_Pointer, Widget_Pointer, Widget_PointerMove,
|
||||
TextWidget_Reposition
|
||||
};
|
||||
void TextWidget_Make(struct TextWidget* w, cc_uint8 horAnchor, cc_uint8 verAnchor, int xOffset, int yOffset) {
|
||||
@ -148,8 +148,8 @@ static void ButtonWidget_Render(void* widget, double delta) {
|
||||
|
||||
static const struct WidgetVTABLE ButtonWidget_VTABLE = {
|
||||
Widget_NullFunc, ButtonWidget_Render, ButtonWidget_Free,
|
||||
Widget_Key, Widget_Key,
|
||||
Widget_Mouse, Widget_Mouse, Widget_MouseMove, Widget_MouseScroll,
|
||||
Widget_Key, Widget_Key, Widget_MouseScroll,
|
||||
Widget_Pointer, Widget_Pointer, Widget_PointerMove,
|
||||
ButtonWidget_Reposition
|
||||
};
|
||||
void ButtonWidget_Make(struct ButtonWidget* w, int minWidth, Widget_LeftClick onClick, cc_uint8 horAnchor, cc_uint8 verAnchor, int xOffset, int yOffset) {
|
||||
@ -239,12 +239,14 @@ static void ScrollbarWidget_Render(void* widget, double delta) {
|
||||
Gfx_Draw2DFlat(x, y - 1 + 4, width, SCROLL_BORDER, Scroll_BackCol);
|
||||
}
|
||||
|
||||
static bool ScrollbarWidget_MouseDown(void* widget, int x, int y, MouseButton btn) {
|
||||
static bool ScrollbarWidget_PointerDown(void* widget, int id, int x, int y) {
|
||||
struct ScrollbarWidget* w = (struct ScrollbarWidget*)widget;
|
||||
int posY, height;
|
||||
|
||||
if (w->draggingMouse) return true;
|
||||
if (w->draggingId == id) return true;
|
||||
if (x < w->x || x >= w->x + w->width) return false;
|
||||
/* only intercept pointer that's dragging scrollbar */
|
||||
if (w->draggingId) return false;
|
||||
|
||||
y -= w->y;
|
||||
ScrollbarWidget_GetScrollbarCoords(w, &posY, &height);
|
||||
@ -254,17 +256,19 @@ static bool ScrollbarWidget_MouseDown(void* widget, int x, int y, MouseButton bt
|
||||
} else if (y >= posY + height) {
|
||||
w->topRow += TABLE_MAX_ROWS_DISPLAYED;
|
||||
} else {
|
||||
w->draggingMouse = true;
|
||||
w->mouseOffset = y - posY;
|
||||
w->draggingId = id;
|
||||
w->dragOffset = y - posY;
|
||||
}
|
||||
ScrollbarWidget_ClampTopRow(w);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool ScrollbarWidget_MouseUp(void* widget, int x, int y, MouseButton btn) {
|
||||
static bool ScrollbarWidget_PointerUp(void* widget, int id, int x, int y) {
|
||||
struct ScrollbarWidget* w = (struct ScrollbarWidget*)widget;
|
||||
w->draggingMouse = false;
|
||||
w->mouseOffset = 0;
|
||||
if (w->draggingId != id) return true;
|
||||
|
||||
w->draggingId = 0;
|
||||
w->dragOffset = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -277,14 +281,14 @@ static bool ScrollbarWidget_MouseScroll(void* widget, float delta) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool ScrollbarWidget_MouseMove(void* widget, int x, int y) {
|
||||
static bool ScrollbarWidget_PointerMove(void* widget, int id, int x, int y) {
|
||||
struct ScrollbarWidget* w = (struct ScrollbarWidget*)widget;
|
||||
float scale;
|
||||
|
||||
if (w->draggingMouse) {
|
||||
if (w->draggingId == id) {
|
||||
y -= w->y;
|
||||
scale = ScrollbarWidget_GetScale(w);
|
||||
w->topRow = (int)((y - w->mouseOffset) / scale);
|
||||
w->topRow = (int)((y - w->dragOffset) / scale);
|
||||
ScrollbarWidget_ClampTopRow(w);
|
||||
return true;
|
||||
}
|
||||
@ -292,20 +296,20 @@ static bool ScrollbarWidget_MouseMove(void* widget, int x, int y) {
|
||||
}
|
||||
|
||||
static const struct WidgetVTABLE ScrollbarWidget_VTABLE = {
|
||||
Widget_NullFunc, ScrollbarWidget_Render, Widget_NullFunc,
|
||||
Widget_Key, Widget_Key,
|
||||
ScrollbarWidget_MouseDown, ScrollbarWidget_MouseUp, ScrollbarWidget_MouseMove, ScrollbarWidget_MouseScroll,
|
||||
Widget_NullFunc, ScrollbarWidget_Render, Widget_NullFunc,
|
||||
Widget_Key, Widget_Key, ScrollbarWidget_MouseScroll,
|
||||
ScrollbarWidget_PointerDown, ScrollbarWidget_PointerUp, ScrollbarWidget_PointerMove,
|
||||
Widget_CalcPosition
|
||||
};
|
||||
void ScrollbarWidget_Create(struct ScrollbarWidget* w) {
|
||||
Widget_Reset(w);
|
||||
w->VTABLE = &ScrollbarWidget_VTABLE;
|
||||
w->width = SCROLL_WIDTH;
|
||||
w->totalRows = 0;
|
||||
w->topRow = 0;
|
||||
w->scrollingAcc = 0.0f;
|
||||
w->draggingMouse = false;
|
||||
w->mouseOffset = 0;
|
||||
w->totalRows = 0;
|
||||
w->topRow = 0;
|
||||
w->scrollingAcc = 0.0f;
|
||||
w->draggingId = 0;
|
||||
w->dragOffset = 0;
|
||||
}
|
||||
|
||||
|
||||
@ -435,7 +439,7 @@ static bool HotbarWidget_KeyUp(void* widget, Key key) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HotbarWidget_MouseDown(void* widget, int x, int y, MouseButton btn) {
|
||||
static bool HotbarWidget_PointerDown(void* widget, int id, int x, int y) {
|
||||
struct HotbarWidget* w = (struct HotbarWidget*)widget;
|
||||
int width, height;
|
||||
int i, cellX, cellY;
|
||||
@ -474,9 +478,9 @@ static bool HotbarWidget_MouseScroll(void* widget, float delta) {
|
||||
}
|
||||
|
||||
static const struct WidgetVTABLE HotbarWidget_VTABLE = {
|
||||
Widget_NullFunc, HotbarWidget_Render, Widget_NullFunc,
|
||||
HotbarWidget_KeyDown, HotbarWidget_KeyUp,
|
||||
HotbarWidget_MouseDown, Widget_Mouse, Widget_MouseMove, HotbarWidget_MouseScroll,
|
||||
Widget_NullFunc, HotbarWidget_Render, Widget_NullFunc,
|
||||
HotbarWidget_KeyDown, HotbarWidget_KeyUp, HotbarWidget_MouseScroll,
|
||||
HotbarWidget_PointerDown, Widget_Pointer, Widget_PointerMove,
|
||||
HotbarWidget_Reposition
|
||||
};
|
||||
void HotbarWidget_Create(struct HotbarWidget* w) {
|
||||
@ -700,11 +704,11 @@ static void TableWidget_ScrollRelative(struct TableWidget* w, int delta) {
|
||||
TableWidget_MoveCursorToSelected(w);
|
||||
}
|
||||
|
||||
static bool TableWidget_MouseDown(void* widget, int x, int y, MouseButton btn) {
|
||||
static bool TableWidget_PointerDown(void* widget, int id, int x, int y) {
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
w->pendingClose = false;
|
||||
|
||||
if (Elem_HandlesMouseDown(&w->scroll, x, y, btn)) {
|
||||
if (Elem_HandlesPointerDown(&w->scroll, id, x, y)) {
|
||||
return true;
|
||||
} else if (w->selectedIndex != -1 && w->blocks[w->selectedIndex] != BLOCK_AIR) {
|
||||
Inventory_SetSelectedBlock(w->blocks[w->selectedIndex]);
|
||||
@ -716,9 +720,9 @@ static bool TableWidget_MouseDown(void* widget, int x, int y, MouseButton btn) {
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool TableWidget_MouseUp(void* widget, int x, int y, MouseButton btn) {
|
||||
static bool TableWidget_PointerUp(void* widget, int id, int x, int y) {
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
return Elem_HandlesMouseUp(&w->scroll, x, y, btn);
|
||||
return Elem_HandlesPointerUp(&w->scroll, id, x, y);
|
||||
}
|
||||
|
||||
static bool TableWidget_MouseScroll(void* widget, float delta) {
|
||||
@ -742,12 +746,12 @@ static bool TableWidget_MouseScroll(void* widget, float delta) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool TableWidget_MouseMove(void* widget, int x, int y) {
|
||||
static bool TableWidget_PointerMove(void* widget, int id, int x, int y) {
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
int cellSize, maxHeight;
|
||||
int i, cellX, cellY;
|
||||
|
||||
if (Elem_HandlesMouseMove(&w->scroll, x, y)) return true;
|
||||
if (Elem_HandlesPointerMove(&w->scroll, id, x, y)) return true;
|
||||
if (w->lastX == x && w->lastY == y) return true;
|
||||
w->lastX = x; w->lastY = y;
|
||||
|
||||
@ -788,9 +792,9 @@ static bool TableWidget_KeyDown(void* widget, Key key) {
|
||||
}
|
||||
|
||||
static const struct WidgetVTABLE TableWidget_VTABLE = {
|
||||
Widget_NullFunc, TableWidget_Render, TableWidget_Free,
|
||||
TableWidget_KeyDown, Widget_Key,
|
||||
TableWidget_MouseDown, TableWidget_MouseUp, TableWidget_MouseMove, TableWidget_MouseScroll,
|
||||
Widget_NullFunc, TableWidget_Render, TableWidget_Free,
|
||||
TableWidget_KeyDown, Widget_Key, TableWidget_MouseScroll,
|
||||
TableWidget_PointerDown, TableWidget_PointerUp, TableWidget_PointerMove,
|
||||
TableWidget_Reposition
|
||||
};
|
||||
void TableWidget_Create(struct TableWidget* w) {
|
||||
@ -1182,7 +1186,7 @@ static bool InputWidget_KeyDown(void* widget, Key key) {
|
||||
|
||||
static bool InputWidget_KeyUp(void* widget, Key key) { return true; }
|
||||
|
||||
static bool InputWidget_MouseDown(void* widget, int x, int y, MouseButton button) {
|
||||
static bool InputWidget_PointerDown(void* widget, int id, int x, int y) {
|
||||
String line; char lineBuffer[STRING_SIZE];
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
struct DrawTextArgs args;
|
||||
@ -1427,9 +1431,9 @@ static bool MenuInputWidget_AllowedChar(void* widget, char c) {
|
||||
|
||||
static int MenuInputWidget_GetMaxLines(void) { return 1; }
|
||||
static const struct WidgetVTABLE MenuInputWidget_VTABLE = {
|
||||
Widget_NullFunc, MenuInputWidget_Render, InputWidget_Free,
|
||||
InputWidget_KeyDown, InputWidget_KeyUp,
|
||||
InputWidget_MouseDown, Widget_Mouse, Widget_MouseMove, Widget_MouseScroll,
|
||||
Widget_NullFunc, MenuInputWidget_Render, InputWidget_Free,
|
||||
InputWidget_KeyDown, InputWidget_KeyUp, Widget_MouseScroll,
|
||||
InputWidget_PointerDown, Widget_Pointer, Widget_PointerMove,
|
||||
InputWidget_Reposition
|
||||
};
|
||||
void MenuInputWidget_Create(struct MenuInputWidget* w, int width, int height, const String* text, struct MenuInputDesc* desc) {
|
||||
@ -1691,8 +1695,8 @@ static int ChatInputWidget_GetMaxLines(void) {
|
||||
|
||||
static const struct WidgetVTABLE ChatInputWidget_VTABLE = {
|
||||
Widget_NullFunc, ChatInputWidget_Render, InputWidget_Free,
|
||||
ChatInputWidget_KeyDown, InputWidget_KeyUp,
|
||||
InputWidget_MouseDown, Widget_Mouse, Widget_MouseMove, Widget_MouseScroll,
|
||||
ChatInputWidget_KeyDown, InputWidget_KeyUp, Widget_MouseScroll,
|
||||
InputWidget_PointerDown, Widget_Pointer, Widget_PointerMove,
|
||||
InputWidget_Reposition
|
||||
};
|
||||
void ChatInputWidget_Create(struct ChatInputWidget* w) {
|
||||
@ -2098,8 +2102,8 @@ static void PlayerListWidget_Free(void* widget) {
|
||||
|
||||
static const struct WidgetVTABLE PlayerListWidget_VTABLE = {
|
||||
PlayerListWidget_Init, PlayerListWidget_Render, PlayerListWidget_Free,
|
||||
Widget_Key, Widget_Key,
|
||||
Widget_Mouse, Widget_Mouse, Widget_MouseMove, Widget_MouseScroll,
|
||||
Widget_Key, Widget_Key, Widget_MouseScroll,
|
||||
Widget_Pointer, Widget_Pointer, Widget_PointerMove,
|
||||
PlayerListWidget_Reposition
|
||||
};
|
||||
void PlayerListWidget_Create(struct PlayerListWidget* w, struct FontDesc* font, bool classic) {
|
||||
@ -2498,8 +2502,8 @@ static void TextGroupWidget_Free(void* widget) {
|
||||
|
||||
static const struct WidgetVTABLE TextGroupWidget_VTABLE = {
|
||||
Widget_NullFunc, TextGroupWidget_Render, TextGroupWidget_Free,
|
||||
Widget_Key, Widget_Key,
|
||||
Widget_Mouse, Widget_Mouse, Widget_MouseMove, Widget_MouseScroll,
|
||||
Widget_Key, Widget_Key, Widget_MouseScroll,
|
||||
Widget_Pointer, Widget_Pointer, Widget_PointerMove,
|
||||
TextGroupWidget_Reposition
|
||||
};
|
||||
void TextGroupWidget_Create(struct TextGroupWidget* w, int lines, struct Texture* textures, TextGroupWidget_Get getLine) {
|
||||
@ -2744,8 +2748,8 @@ void SpecialInputWidget_SetActive(struct SpecialInputWidget* w, bool active) {
|
||||
|
||||
static const struct WidgetVTABLE SpecialInputWidget_VTABLE = {
|
||||
Widget_NullFunc, SpecialInputWidget_Render, SpecialInputWidget_Free,
|
||||
Widget_Key, Widget_Key,
|
||||
SpecialInputWidget_MouseDown, Widget_Mouse, Widget_MouseMove, Widget_MouseScroll,
|
||||
Widget_Key, Widget_Key, Widget_MouseScroll,
|
||||
SpecialInputWidget_MouseDown, Widget_Pointer, Widget_PointerMove,
|
||||
SpecialInputWidget_Reposition
|
||||
};
|
||||
void SpecialInputWidget_Create(struct SpecialInputWidget* w, struct FontDesc* font, struct InputWidget* target) {
|
||||
|
@ -49,8 +49,8 @@ struct ScrollbarWidget {
|
||||
Widget_Layout
|
||||
int totalRows, topRow;
|
||||
float scrollingAcc;
|
||||
int mouseOffset;
|
||||
bool draggingMouse;
|
||||
int dragOffset;
|
||||
int draggingId;
|
||||
};
|
||||
/* Resets state of the given scrollbar widget to default. */
|
||||
CC_NOINLINE void ScrollbarWidget_Create(struct ScrollbarWidget* w);
|
||||
|
Loading…
x
Reference in New Issue
Block a user