Fixes scrolling issues with collapsed tracks

This was caused by incorrect calculation of groupSize width

Closes #87
This commit is contained in:
Daniel Collin 2013-10-18 19:07:28 +02:00
parent 1bf67b96b7
commit c5e2a5076a

View File

@ -255,21 +255,6 @@ static void renderText(const struct TrackInfo* info, struct sync_track* track, i
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static int findStartTrack(Group* group, Track* startTrack)
{
int i, track_count = group->trackCount;
for (i = 0; i < track_count; ++i)
{
if (group->tracks[i] == startTrack)
return i;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static int getTrackSize(TrackViewInfo* viewInfo, Track* track)
{
if (track->folded)
@ -291,14 +276,20 @@ int getGroupSize(TrackViewInfo* viewInfo, Group* group, int startTrack)
{
int i, size = 0, count = group->trackCount;
if (group->width == 0 && group->name)
group->width = (Emgui_getTextSize(group->name) & 0xffff) + 40;
else
group->width = (Emgui_getTextSize(group->tracks[0]->displayName) & 0xffff) + 40;
if (group->width == 0)
{
if (group->name)
group->width = (Emgui_getTextSize(group->name) & 0xffff) + 40;
else
group->width = (Emgui_getTextSize(group->tracks[0]->displayName) & 0xffff) + 40;
}
if (group->folded)
return track_size_folded;
if (!group->name)
return getTrackSize(viewInfo, group->tracks[0]);
for (i = startTrack; i < count; ++i)
size += getTrackSize(viewInfo, group->tracks[i]);
@ -445,7 +436,7 @@ static int renderChannel(struct TrackInfo* info, int startX, Track* trackData, b
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static int renderGroup(Group* group, Track* startTrack, int posX, int* trackOffset, struct TrackInfo info, TrackData* trackData)
static int renderGroup(Group* group, int posX, int* trackOffset, struct TrackInfo info, TrackData* trackData)
{
int i, startTrackIndex = 0, size, track_count = group->trackCount;
const int oldY = info.startY;
@ -455,9 +446,7 @@ static int renderGroup(Group* group, Track* startTrack, int posX, int* trackOffs
Emgui_setFont(info.viewInfo->smallFontId);
startTrackIndex = findStartTrack(group, startTrack);
size = getGroupSize(info.viewInfo, group, startTrackIndex);
size = getGroupSize(info.viewInfo, group, 0);
renderGroupHeader(group, posX, oldY, size, info.viewInfo->windowSizeX);
@ -639,7 +628,7 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
else
{
int temp;
x_pos += renderGroup(group, group->tracks[0], x_pos, &temp, info, trackData);
x_pos += renderGroup(group, x_pos, &temp, info, trackData);
}
}