raysan5 / raygui

A simple and easy-to-use immediate-mode gui library
zlib License
3.26k stars 280 forks source link

Define a consistent convention on controls return values #402

Open raysan5 opened 2 months ago

raysan5 commented 2 months ago

raygui was redesigned on v4.0 to always return an int as "control result value" while keeping the control required variables as function parameters, usually passed by reference.

Despite the redesign, there was no rule defining/unifying that "control result value" that should be returned by every control. Here some possible ideas (ref: #371):

typedef enum GuiControlResult {
    RESULT_NONE = 0,
    RESULT_FOCUSED = 1,
    RESULT_CLICKED = 2,
    RESULT_SCROLLED = 3,
    RESULT_CUSTOM01 = 4,
    RESULT_CUSTOM02 = 5,
} GuiControlResult;

Every control has to be carefully analized to see what are the possible internal states that could be returned. It would be nice to unify the possible return values but also allow per-control custom return values.

Note that some controls already return specific results, reviewing this functionality could be a breaking change: