From 951600da1e03526710d99f77f4a375924eff3030 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Sun, 15 Nov 2009 22:34:27 +0000 Subject: [PATCH] Fix crashing bug when you click a layer button, hold it, and release past the edges of the layer buttons. Fix a display bug when layer bar is hidden and you use the shortcut actions. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1202 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- engine.c | 2 +- layers.c | 18 +++++++++++++++--- windows.c | 3 +++ 3 files changed, 19 insertions(+), 4 deletions(-) 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 --) {