diff --git a/engine.c b/engine.c index 0c459ccb..6b4d5125 100644 --- a/engine.c +++ b/engine.c @@ -69,7 +69,7 @@ char * Menu_tooltip[NB_BUTTONS]= "Layerbar / Hide menu ", "Layers manager ", - "Select transparent color", + "Get/Set transparent col.", "Merge layer ", "Add layer ", "Drop layer ", diff --git a/layers.c b/layers.c index c3b319a7..45776c5f 100644 --- a/layers.c +++ b/layers.c @@ -134,20 +134,32 @@ void Button_Layer_remove(void) void Button_Layer_select(void) { - word layer; + short layer; // Determine which button is clicked according to mouse position layer = (Mouse_X/Menu_factor_X - Menu_bars[MENUBAR_LAYERS].Skin_width) / Layer_button_width; - + + // Safety required because the mouse cursor can have slided outside button. + if (layer < 0) + layer=0; + else if (layer > Main_backups->Pages->Nb_layers-1) + layer=Main_backups->Pages->Nb_layers-1; + Layer_activate(layer, LEFT_SIDE); } void Button_Layer_toggle(void) { - word layer; + short layer; // Determine which button is clicked according to mouse position layer = (Mouse_X/Menu_factor_X - Menu_bars[MENUBAR_LAYERS].Skin_width) / Layer_button_width; + + // Safety required because the mouse cursor can have slided outside button. + if (layer < 0) + layer=0; + else if (layer > Main_backups->Pages->Nb_layers-1) + layer=Main_backups->Pages->Nb_layers-1; Layer_activate(layer, RIGHT_SIDE); } diff --git a/windows.c b/windows.c index 4186264d..de32a471 100644 --- a/windows.c +++ b/windows.c @@ -460,6 +460,9 @@ void Display_layerbar(void) word current_button; word repeats=1; + if (! Menu_bars[MENUBAR_LAYERS].Visible) + return; + // Find top for (current_menu = MENUBAR_COUNT - 1; current_menu > MENUBAR_LAYERS; current_menu --) {