Don't default to negative selection
This commit is contained in:
parent
86b87bee74
commit
653ff1373f
15
nncmpp.c
15
nncmpp.c
|
@ -645,7 +645,7 @@ tab_init (struct tab *self, const char *name)
|
||||||
// Assuming tab names are pure ASCII, otherwise this would be inaccurate
|
// Assuming tab names are pure ASCII, otherwise this would be inaccurate
|
||||||
// and we'd need to filter it first to replace invalid chars with '?'
|
// and we'd need to filter it first to replace invalid chars with '?'
|
||||||
self->name_width = u8_strwidth ((uint8_t *) self->name, locale_charset ());
|
self->name_width = u8_strwidth ((uint8_t *) self->name, locale_charset ());
|
||||||
self->item_selected = -1;
|
self->item_selected = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1316,7 +1316,7 @@ static void
|
||||||
app_ensure_selection_visible (void)
|
app_ensure_selection_visible (void)
|
||||||
{
|
{
|
||||||
struct tab *tab = g.active_tab;
|
struct tab *tab = g.active_tab;
|
||||||
if (tab->item_selected < 0)
|
if (tab->item_selected < 0 || !tab->item_count)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int too_high = tab->item_top - tab->item_selected;
|
int too_high = tab->item_top - tab->item_selected;
|
||||||
|
@ -1334,8 +1334,8 @@ app_move_selection (int diff)
|
||||||
{
|
{
|
||||||
struct tab *tab = g.active_tab;
|
struct tab *tab = g.active_tab;
|
||||||
int fixed = tab->item_selected += diff;
|
int fixed = tab->item_selected += diff;
|
||||||
fixed = MAX (fixed, 0);
|
|
||||||
fixed = MIN (fixed, (int) tab->item_count - 1);
|
fixed = MIN (fixed, (int) tab->item_count - 1);
|
||||||
|
fixed = MAX (fixed, 0);
|
||||||
|
|
||||||
bool result = tab->item_selected != fixed;
|
bool result = tab->item_selected != fixed;
|
||||||
tab->item_selected = fixed;
|
tab->item_selected = fixed;
|
||||||
|
@ -1556,7 +1556,8 @@ app_process_action (enum action action)
|
||||||
case ACTION_GOTO_BOTTOM:
|
case ACTION_GOTO_BOTTOM:
|
||||||
if (tab->item_count)
|
if (tab->item_count)
|
||||||
{
|
{
|
||||||
g.active_tab->item_selected = (int) g.active_tab->item_count - 1;
|
g.active_tab->item_selected =
|
||||||
|
MAX (0, (int) g.active_tab->item_count - 1);
|
||||||
app_ensure_selection_visible ();
|
app_ensure_selection_visible ();
|
||||||
app_invalidate ();
|
app_invalidate ();
|
||||||
}
|
}
|
||||||
|
@ -1814,7 +1815,7 @@ static bool
|
||||||
current_tab_on_action (enum action action)
|
current_tab_on_action (enum action action)
|
||||||
{
|
{
|
||||||
struct tab *self = g.active_tab;
|
struct tab *self = g.active_tab;
|
||||||
if (self->item_selected < 0)
|
if (self->item_selected < 0 || !self->item_count)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
switch (action)
|
switch (action)
|
||||||
|
@ -2034,7 +2035,7 @@ static bool
|
||||||
library_tab_on_action (enum action action)
|
library_tab_on_action (enum action action)
|
||||||
{
|
{
|
||||||
struct tab *self = g.active_tab;
|
struct tab *self = g.active_tab;
|
||||||
if (self->item_selected < 0)
|
if (self->item_selected < 0 || !self->item_count)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
struct mpd_client *c = &g.client;
|
struct mpd_client *c = &g.client;
|
||||||
|
@ -2309,7 +2310,7 @@ static bool
|
||||||
streams_tab_on_action (enum action action)
|
streams_tab_on_action (enum action action)
|
||||||
{
|
{
|
||||||
struct tab *self = g.active_tab;
|
struct tab *self = g.active_tab;
|
||||||
if (self->item_selected < 0)
|
if (self->item_selected < 0 || !self->item_count)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// For simplicity the URL is the string following the stream name
|
// For simplicity the URL is the string following the stream name
|
||||||
|
|
Loading…
Reference in New Issue