Fix scroll bar when n_items < max
parent
451b099ec4
commit
96a6ccff39
14
engine/gui.c
14
engine/gui.c
|
@ -1,6 +1,7 @@
|
||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
#include "raylib.h"
|
#include "raylib.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#define RAYGUI_MAX_CONTROLS 16 // Maximum number of standard controls
|
#define RAYGUI_MAX_CONTROLS 16 // Maximum number of standard controls
|
||||||
#define RAYGUI_MAX_PROPS_BASE 16 // Maximum number of standard properties
|
#define RAYGUI_MAX_PROPS_BASE 16 // Maximum number of standard properties
|
||||||
|
@ -669,11 +670,14 @@ void vert_scrollarea_set_item_dims(VertScrollArea_t* scroll_area, unsigned int i
|
||||||
bool vert_scrollarea_n_items(VertScrollArea_t* scroll_area, unsigned int n_items) {
|
bool vert_scrollarea_n_items(VertScrollArea_t* scroll_area, unsigned int n_items) {
|
||||||
if (n_items >= scroll_area->max_items) return false;
|
if (n_items >= scroll_area->max_items) return false;
|
||||||
|
|
||||||
//scroll_area->n_items = n_items;
|
// Due to OpenGL convention where y is -1 downwards,
|
||||||
//scroll_area->scroll_bounds.y = n_items * (scroll_area->item_height + scroll_area->item_padding);
|
// The scroll bar is set to decreases the scroll_pos when going down
|
||||||
//scroll_area->scroll_pos =
|
// This value is used as the offset when rendering, which results in correctly
|
||||||
// (scroll_area->scroll_pos > scroll_area->scroll_bounds.y ) ?
|
// give the illusion of 'scrolling down'
|
||||||
// scroll_area->scroll_bounds.y : (scroll_area->scroll_pos;
|
// So, adjust the minimum bound which is the height of the items that are not shown
|
||||||
|
scroll_area->n_items = n_items;
|
||||||
|
scroll_area->scroll_bounds.x =
|
||||||
|
(scroll_area->max_items - n_items)* (scroll_area->item_height + scroll_area->item_padding) + scroll_area->item_padding;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@ typedef struct VertScrollArea {
|
||||||
unsigned int item_padding;
|
unsigned int item_padding;
|
||||||
|
|
||||||
float scroll_pos;
|
float scroll_pos;
|
||||||
float max_scroll_bounds;
|
|
||||||
Vector2 scroll_bounds;
|
Vector2 scroll_bounds;
|
||||||
|
|
||||||
UIComp_t scroll_bar;
|
UIComp_t scroll_bar;
|
||||||
|
|
|
@ -130,8 +130,7 @@ void init_level_select_scene(LevelSelectScene_t* scene)
|
||||||
ClearBackground(BLANK);
|
ClearBackground(BLANK);
|
||||||
if (scene->data.level_pack != NULL)
|
if (scene->data.level_pack != NULL)
|
||||||
{
|
{
|
||||||
scene->data.scroll_area.n_items = scene->data.level_pack->n_levels;
|
vert_scrollarea_n_items(&scene->data.scroll_area, scene->data.level_pack->n_levels);
|
||||||
//vert_scrollarea_n_items(&scene->data.scroll_area, scene->data.level_pack->n_levels);
|
|
||||||
for (unsigned int i = 0; i < scene->data.level_pack->n_levels; ++i)
|
for (unsigned int i = 0; i < scene->data.level_pack->n_levels; ++i)
|
||||||
{
|
{
|
||||||
vert_scrollarea_insert_item(&scene->data.scroll_area, scene->data.level_pack->levels[i].level_name, i);
|
vert_scrollarea_insert_item(&scene->data.scroll_area, scene->data.level_pack->levels[i].level_name, i);
|
||||||
|
|
Loading…
Reference in New Issue