From c7d7938797d29ca21ba41cf3b80cbc61debdc6d2 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Mon, 26 Apr 2010 19:22:00 +0000 Subject: [PATCH] Settings: Added the missing mouse sensitivity; Fixed mouse droppings; Toggle settings in the other direction with right mouse button. Skins: Fixed small problem when changing skins, note taking color change into account immediately. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1465 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- src/buttons.c | 179 +++++++++++++++++++++++++++++--------------------- src/init.c | 48 +++++++------- src/main.c | 8 +-- src/palette.c | 7 +- src/struct.h | 10 +-- src/windows.c | 8 +-- 6 files changed, 143 insertions(+), 117 deletions(-) diff --git a/src/buttons.c b/src/buttons.c index 7aec5f11..06d4f82d 100644 --- a/src/buttons.c +++ b/src/buttons.c @@ -751,6 +751,14 @@ const T_Lookup Lookup_MenuRatio[] = { {NULL,-1}, }; +const T_Lookup Lookup_MouseSpeed[] = { + {"Normal",1}, + {"/2",2}, + {"/3",3}, + {"/4",4}, + {NULL,-1}, +}; + typedef struct { const char* Label; byte Type; // 0: label, 1+: setting (size in bytes) @@ -808,7 +816,8 @@ const char *Lookup_code(int code, const T_Lookup *lookup) return lookup[0].Label; } -int Lookup_toggle(int code, const T_Lookup *lookup) +/// Increase an enum to next-higher value (wrapping). +int Lookup_next(int code, const T_Lookup *lookup) { int i; @@ -824,11 +833,24 @@ int Lookup_toggle(int code, const T_Lookup *lookup) return 0; } +/// Decrease an enum to previous value (wrapping). +int Lookup_previous(int code, const T_Lookup *lookup) +{ + int count; + int current=-1; + + for(count=0; lookup[count].Label!=NULL; count++) + { + if (lookup[count].Code == code) + current=count; + } + + return lookup[(current + count - 1) % count].Code; +} + void Settings_display_config(T_Setting *setting, T_Config * conf, T_Special_button *panel) { int i; - - Hide_cursor(); // A single button Print_in_window(155,166,(conf->Auto_save)?"YES":" NO",MC_Black,MC_Light); @@ -837,7 +859,7 @@ void Settings_display_config(T_Setting *setting, T_Config * conf, T_Special_butt Window_rectangle(panel->Pos_X, panel->Pos_Y, panel->Width, panel->Height+1, MC_Light); for (i=0; iPos_X+3, panel->Pos_Y+i*SETTING_HEIGHT+3, setting[i].Label, i==0?MC_White:MC_Dark, MC_Light); + Print_in_window(panel->Pos_X+3, panel->Pos_Y+i*SETTING_HEIGHT+(SETTING_HEIGHT-6)/2, setting[i].Label, i==0?MC_White:MC_Dark, MC_Light); if(setting[i].Value) { @@ -848,19 +870,17 @@ void Settings_display_config(T_Setting *setting, T_Config * conf, T_Special_butt // Use a lookup table to print a label const char *str; str = Lookup_code(value,setting[i].Lookup); - Print_in_window(panel->Pos_X+3+176, panel->Pos_Y+i*SETTING_HEIGHT+3, str, MC_Black, MC_Light); + Print_in_window(panel->Pos_X+3+176, panel->Pos_Y+i*SETTING_HEIGHT+(SETTING_HEIGHT-6)/2, str, MC_Black, MC_Light); } else { // Print a number char str[10]; Num2str(value,str,setting[i].Digits); - Print_in_window(panel->Pos_X+3+176, panel->Pos_Y+i*SETTING_HEIGHT+3, str, MC_Black, MC_Light); + Print_in_window(panel->Pos_X+3+176, panel->Pos_Y+i*SETTING_HEIGHT+(SETTING_HEIGHT-6)/2, str, MC_Black, MC_Light); } } } - - Display_cursor(); } void Settings_save_config(T_Config * conf) @@ -884,7 +904,7 @@ void Settings_load_config(T_Config * conf) void Button_Settings(void) { short clicked_button; - T_Config Config_choisie; + T_Config config; byte config_is_reloaded=0; T_Special_button *panel; byte need_redraw=1; @@ -898,56 +918,56 @@ void Button_Settings(void) {" --- GUI ---",0,NULL,0,0,0,NULL}, {"",0,NULL,0,0,0,NULL}, - {"Opening message:",1,&(Config_choisie.Opening_message),0,1,0,Lookup_YesNo}, - {"Menu ratio adapt:",1,&(Config_choisie.Ratio),0,1,0,Lookup_MenuRatio}, - {"Draw limits:",1,&(Config_choisie.Display_image_limits),0,1,0,Lookup_YesNo}, - {"Coordinates:",1,&(Config_choisie.Coords_rel),0,1,0,Lookup_Coords}, - {"Separate colors:",1,&(Config_choisie.Separate_colors),0,1,0,Lookup_YesNo}, - {"Safety colors:",1,&(Config_choisie.Safety_colors),0,1,0,Lookup_YesNo}, - {"Grid XOR color:",1,&(Config_choisie.Grid_XOR_color),0,255,3,NULL}, + {"Opening message:",1,&(config.Opening_message),0,1,0,Lookup_YesNo}, + {"Menu ratio adapt:",1,&(config.Ratio),0,1,0,Lookup_MenuRatio}, + {"Draw limits:",1,&(config.Display_image_limits),0,1,0,Lookup_YesNo}, + {"Coordinates:",1,&(config.Coords_rel),0,1,0,Lookup_Coords}, + {"Separate colors:",1,&(config.Separate_colors),0,1,0,Lookup_YesNo}, + {"Safety colors:",1,&(config.Safety_colors),0,1,0,Lookup_YesNo}, + {"Grid XOR color:",1,&(config.Grid_XOR_color),0,255,3,NULL}, {"",0,NULL,0,0,0,NULL}, {"",0,NULL,0,0,0,NULL}, {" --- Input ---",0,NULL,0,0,0,NULL}, {"",0,NULL,0,0,0,NULL}, {"Scrollbar speed",0,NULL,0,0,0,NULL}, - {" on left click:",1,&(Config_choisie.Delay_left_click_on_slider),1,255,4,NULL}, - {" on right click:",1,&(Config_choisie.Delay_right_click_on_slider),1,255,4,NULL}, - {"Merge movement:",1,&(Config_choisie.Mouse_merge_movement),0,100,4,NULL}, - {"Double click speed:",2,&(Config_choisie.Double_click_speed),1,1999,4,NULL}, - {"Double key speed:",2,&(Config_choisie.Double_key_speed),1,1999,4,NULL}, - {"",0,NULL,0,0,0,NULL}, - {"",0,NULL,0,0,0,NULL}, - {"",0,NULL,0,0,0,NULL}, + {" on left click:",1,&(config.Delay_left_click_on_slider),1,255,4,NULL}, + {" on right click:",1,&(config.Delay_right_click_on_slider),1,255,4,NULL}, + {"Merge movement:",1,&(config.Mouse_merge_movement),0,100,4,NULL}, + {"Double click speed:",2,&(config.Double_click_speed),1,1999,4,NULL}, + {"Double key speed:",2,&(config.Double_key_speed),1,1999,4,NULL}, + {"Mouse speed (fullscreen)",0,NULL,0,0,0,NULL}, + {" horizontally:",1,&(config.Mouse_sensitivity_index_x),1,4,0,Lookup_MouseSpeed}, + {" vertically:",1,&(config.Mouse_sensitivity_index_y),1,4,0,Lookup_MouseSpeed}, {" --- Editing ---",0,NULL,0,0,0,NULL}, {"",0,NULL,0,0,0,NULL}, - {"Adjust brush pick:",1,&(Config_choisie.Adjust_brush_pick),0,1,0,Lookup_YesNo}, - {"Undo pages:",1,&(Config_choisie.Max_undo_pages),1,99,5,NULL}, - {"Vertices per polygon:",4,&(Config_choisie.Nb_max_vertices_per_polygon),2,16384,5,NULL}, - {"Fast zoom:",1,&(Config_choisie.Fast_zoom),0,1,0,Lookup_YesNo}, - {"Clear with stencil:",1,&(Config_choisie.Clear_with_stencil),0,1,0,Lookup_YesNo}, - {"Auto discontinuous:",1,&(Config_choisie.Auto_discontinuous),0,1,0,Lookup_YesNo}, - {"Auto count colors:",1,&(Config_choisie.Auto_nb_used),0,1,0,Lookup_YesNo}, + {"Adjust brush pick:",1,&(config.Adjust_brush_pick),0,1,0,Lookup_YesNo}, + {"Undo pages:",1,&(config.Max_undo_pages),1,99,5,NULL}, + {"Vertices per polygon:",4,&(config.Nb_max_vertices_per_polygon),2,16384,5,NULL}, + {"Fast zoom:",1,&(config.Fast_zoom),0,1,0,Lookup_YesNo}, + {"Clear with stencil:",1,&(config.Clear_with_stencil),0,1,0,Lookup_YesNo}, + {"Auto discontinuous:",1,&(config.Auto_discontinuous),0,1,0,Lookup_YesNo}, + {"Auto count colors:",1,&(config.Auto_nb_used),0,1,0,Lookup_YesNo}, {"",0,NULL,0,0,0,NULL}, {"",0,NULL,0,0,0,NULL}, {" --- File selector ---",0,NULL,0,0,0,NULL}, {"",0,NULL,0,0,0,NULL}, {"Show in fileselector",0,NULL,0,0,0,NULL}, - {" Hidden files:",4,&(Config_choisie.Show_hidden_files),0,1,0,Lookup_YesNo}, - {" Hidden dirs:",4,&(Config_choisie.Show_hidden_directories),0,1,0,Lookup_YesNo}, - {"Preview delay:",4,&(Config_choisie.Timer_delay), 1,256,3,NULL}, - {"Maximize preview:",1,&(Config_choisie.Maximize_preview), 0,1,0,Lookup_YesNo}, - {"Find file fast:",1,&(Config_choisie.Find_file_fast), 0,2,0,Lookup_FFF}, - {"Auto set resolution:",1,&(Config_choisie.Auto_set_res), 0,1,0,Lookup_YesNo}, - {" According to:",1,&(Config_choisie.Set_resolution_according_to), 1,2,0,Lookup_AutoRes}, - {"Backup:",1,&(Config_choisie.Backup), 0,1,0,Lookup_YesNo}, + {" Hidden files:",4,&(config.Show_hidden_files),0,1,0,Lookup_YesNo}, + {" Hidden dirs:",4,&(config.Show_hidden_directories),0,1,0,Lookup_YesNo}, + {"Preview delay:",4,&(config.Timer_delay), 1,256,3,NULL}, + {"Maximize preview:",1,&(config.Maximize_preview), 0,1,0,Lookup_YesNo}, + {"Find file fast:",1,&(config.Find_file_fast), 0,2,0,Lookup_FFF}, + {"Auto set resolution:",1,&(config.Auto_set_res), 0,1,0,Lookup_YesNo}, + {" According to:",1,&(config.Set_resolution_according_to), 1,2,0,Lookup_AutoRes}, + {"Backup:",1,&(config.Backup), 0,1,0,Lookup_YesNo}, {" --- Format options ---",0,NULL,0,0,0,NULL}, {"",0,NULL,0,0,0,NULL}, - {"Screen size in GIF:",1,&(Config_choisie.Screen_size_in_GIF),0,1,0,Lookup_YesNo}, - {"Clear palette:",1,&(Config_choisie.Clear_palette),0,1,0,Lookup_YesNo}, + {"Screen size in GIF:",1,&(config.Screen_size_in_GIF),0,1,0,Lookup_YesNo}, + {"Clear palette:",1,&(config.Clear_palette),0,1,0,Lookup_YesNo}, {"",0,NULL,0,0,0,NULL}, {"",0,NULL,0,0,0,NULL}, {"",0,NULL,0,0,0,NULL}, @@ -967,7 +987,7 @@ void Button_Settings(void) "FILE FORMAT OPTIONS", }; - Config_choisie=Config; + config=Config; Open_window(307,182,"Settings"); @@ -991,7 +1011,7 @@ void Button_Settings(void) if (need_redraw) { Hide_cursor(); - Settings_display_config(setting+current_page*SETTING_PER_PAGE, &Config_choisie, panel); + Settings_display_config(setting+current_page*SETTING_PER_PAGE, &config, panel); if (need_redraw & 2) { // Including slider position @@ -1010,16 +1030,16 @@ void Button_Settings(void) { case 1 : // Reload - Settings_load_config(&Config_choisie); + Settings_load_config(&config); config_is_reloaded=1; need_redraw=1; break; case 2 : // Auto-save - Config_choisie.Auto_save=!Config_choisie.Auto_save; + config.Auto_save=!config.Auto_save; need_redraw=1; break; case 3 : // Save - Settings_save_config(&Config_choisie); + Settings_save_config(&config); break; // case 4: // Close @@ -1036,14 +1056,17 @@ void Button_Settings(void) // Remember which button is clicked byte old_mouse_k = Mouse_K; - if (Window_normal_button_onclick(panel->Pos_X, panel->Pos_Y+num*SETTING_HEIGHT+1, panel->Width, SETTING_HEIGHT, 5)) + if (Window_normal_button_onclick(panel->Pos_X, panel->Pos_Y+num*SETTING_HEIGHT, panel->Width, SETTING_HEIGHT+1, 5)) { int value = Get_setting_value(&item); if (item.Lookup) { // Enum: toggle it - value = Lookup_toggle(value, item.Lookup); + if (old_mouse_k & LEFT_SIDE) + value = Lookup_next(value, item.Lookup); + else + value = Lookup_previous(value, item.Lookup); Set_setting_value(&item, value); } else @@ -1053,7 +1076,7 @@ void Button_Settings(void) str[0]='\0'; if (! (old_mouse_k & RIGHT_SIDE)) Num2str(value,str,item.Digits+1); - if (Readline(panel->Pos_X+3+176, panel->Pos_Y+num*SETTING_HEIGHT+3,str,item.Digits+1,1)) + if (Readline(panel->Pos_X+3+176, panel->Pos_Y+num*SETTING_HEIGHT+(SETTING_HEIGHT-6)/2,str,item.Digits+1,1)) { value=atoi(str); if (value=3) && (clicked_button<=4)) - { - Main_fileselector_position=0; - Main_fileselector_offset=0; - Spare_fileselector_position=0; - Spare_fileselector_offset=0; - }*/ if (Key == KEY_MOUSEWHEELDOWN) { @@ -1111,7 +1124,19 @@ void Button_Settings(void) } while ( (clicked_button!=4) && (Key!=SDLK_RETURN) ); - Config=Config_choisie; + // Checks on change + if (Config.Show_hidden_directories!=config.Show_hidden_directories + ||Config.Show_hidden_files!=config.Show_hidden_files) + { + // Reset fileselector offsets + // since different files are shown now + Main_fileselector_position=0; + Main_fileselector_offset=0; + Spare_fileselector_position=0; + Spare_fileselector_offset=0; + } + // Copy all + Config=config; if (config_is_reloaded) Compute_optimal_menu_colors(Main_palette); @@ -1237,10 +1262,6 @@ void Button_Skins(void) #define FILESEL_Y 34 - // Show preferred colors - Set_color(MC_Dark, Config.Fav_menu_colors[1].R, Config.Fav_menu_colors[1].G, Config.Fav_menu_colors[1].B); - Set_color(MC_Light, Config.Fav_menu_colors[2].R, Config.Fav_menu_colors[2].G, Config.Fav_menu_colors[2].B); - // --- Read the contents of skins/ directory ------------------ // Here we use the same data container as the fileselectors. @@ -1353,27 +1374,37 @@ void Button_Skins(void) for (y = 14, offs_y = 0; offs_y < 16; offs_y++, y++) for (x = 6, x_pos = 0; x_pos<173; x_pos++, x++) { - if (gfx->Preview[offs_y][x_pos] == gfx->Color_black) + if (gfx->Preview[offs_y][x_pos] == gfx->Color[0]) Pixel_in_window(x, y, MC_Black); - else if (gfx->Preview[offs_y][x_pos] == gfx->Color_dark) + else if (gfx->Preview[offs_y][x_pos] == gfx->Color[1]) Pixel_in_window(x, y, MC_Dark); - else if (gfx->Preview[offs_y][x_pos] == gfx->Color_white) + else if (gfx->Preview[offs_y][x_pos] == gfx->Color[3]) Pixel_in_window(x, y, MC_White); - else if (gfx->Preview[offs_y][x_pos] == gfx->Color_light) + else if (gfx->Preview[offs_y][x_pos] == gfx->Color[2]) Pixel_in_window(x, y, MC_Light); } // Actualize current screen according to preferred GUI colors // Note this only updates onscreen colors + Set_color( + MC_Black, + gfx->Default_palette[gfx->Color[0]].R, + gfx->Default_palette[gfx->Color[0]].G, + gfx->Default_palette[gfx->Color[0]].B); Set_color( MC_Dark, - gfx->Default_palette[gfx->Color_dark].R, - gfx->Default_palette[gfx->Color_dark].G, - gfx->Default_palette[gfx->Color_dark].B); + gfx->Default_palette[gfx->Color[1]].R, + gfx->Default_palette[gfx->Color[1]].G, + gfx->Default_palette[gfx->Color[1]].B); Set_color( MC_Light, - gfx->Default_palette[gfx->Color_light].R, - gfx->Default_palette[gfx->Color_light].G, - gfx->Default_palette[gfx->Color_light].B); + gfx->Default_palette[gfx->Color[2]].R, + gfx->Default_palette[gfx->Color[2]].G, + gfx->Default_palette[gfx->Color[2]].B); + Set_color( + MC_White, + gfx->Default_palette[gfx->Color[3]].R, + gfx->Default_palette[gfx->Color[3]].G, + gfx->Default_palette[gfx->Color[3]].B); } Update_window_area(6, 14, 173, 16); diff --git a/src/init.c b/src/init.c index cfb3abc1..e356572d 100644 --- a/src/init.c +++ b/src/init.c @@ -134,7 +134,7 @@ byte Read_GUI_block(T_Gui_skin *gfx, SDL_Surface *gui, int start_x, int start_y, { // type: 0 = normal GUI element, only 4 colors allowed // type: 1 = mouse cursor, 4 colors allowed + transparent - // type: 2 = brush icon or sieve pattern (only gui->Color_white and gui->Color_trans) + // type: 2 = brush icon or sieve pattern (only gui->Color[3] and gui->Color_trans) // type: 3 = raw bitmap (splash screen) byte * dest_ptr=dest; @@ -154,24 +154,24 @@ byte Read_GUI_block(T_Gui_skin *gfx, SDL_Surface *gui, int start_x, int start_y, for (x=start_x; xColor_black && color != gfx->Color_dark && color != gfx->Color_light && color != gfx->Color_white)) + if (type==0 && (color != gfx->Color[0] && color != gfx->Color[1] && color != gfx->Color[2] && color != gfx->Color[3])) { sprintf(Gui_loading_error_message, "Error in skin file: Was looking at %d,%d for a %d*%d object (%s) but at %d,%d a pixel was found with color %d which isn't one of the GUI colors (which were detected as %d,%d,%d,%d.\n", - start_x, start_y, height, width, section, x, y, color, gfx->Color_black, gfx->Color_dark, gfx->Color_light, gfx->Color_white); + start_x, start_y, height, width, section, x, y, color, gfx->Color[0], gfx->Color[1], gfx->Color[2], gfx->Color[3]); return 1; } - if (type==1 && (color != gfx->Color_black && color != gfx->Color_dark && color != gfx->Color_light && color != gfx->Color_white && color != gfx->Color_trans)) + if (type==1 && (color != gfx->Color[0] && color != gfx->Color[1] && color != gfx->Color[2] && color != gfx->Color[3] && color != gfx->Color_trans)) { sprintf(Gui_loading_error_message, "Error in skin file: Was looking at %d,%d for a %d*%d object (%s) but at %d,%d a pixel was found with color %d which isn't one of the mouse colors (which were detected as %d,%d,%d,%d,%d.\n", - start_x, start_y, height, width, section, x, y, color, gfx->Color_black, gfx->Color_dark, gfx->Color_light, gfx->Color_white, gfx->Color_trans); + start_x, start_y, height, width, section, x, y, color, gfx->Color[0], gfx->Color[1], gfx->Color[2], gfx->Color[3], gfx->Color_trans); return 1; } if (type==2) { - if (color != gfx->Color_white && color != gfx->Color_trans) + if (color != gfx->Color[3] && color != gfx->Color_trans) { sprintf(Gui_loading_error_message, "Error in skin file: Was looking at %d,%d for a %d*%d object (%s) but at %d,%d a pixel was found with color %d which isn't one of the brush colors (which were detected as %d on %d.\n", - start_x, start_y, height, width, section, x, y, color, gfx->Color_white, gfx->Color_trans); + start_x, start_y, height, width, section, x, y, color, gfx->Color[3], gfx->Color_trans); return 1; } // Conversion en 0/1 pour les brosses monochromes internes @@ -278,7 +278,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx) Get_SDL_Palette(SDLPal, gfx->Default_palette); // Carré "noir" - gfx->Color_black = Get_SDL_pixel_8(gui,cursor_x,cursor_y); + gfx->Color[0] = Get_SDL_pixel_8(gui,cursor_x,cursor_y); do { if (++cursor_x>=gui->w) @@ -287,9 +287,9 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx) return 1; } color=Get_SDL_pixel_8(gui,cursor_x,cursor_y); - } while(color==gfx->Color_black); + } while(color==gfx->Color[0]); // Carré "foncé" - gfx->Color_dark = color; + gfx->Color[1] = color; do { if (++cursor_x>=gui->w) @@ -298,9 +298,9 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx) return 1; } color=Get_SDL_pixel_8(gui,cursor_x,cursor_y); - } while(color==gfx->Color_dark); + } while(color==gfx->Color[1]); // Carré "clair" - gfx->Color_light = color; + gfx->Color[2] = color; do { if (++cursor_x>gui->w) @@ -309,9 +309,9 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx) return 1; } color=Get_SDL_pixel_8(gui,cursor_x,cursor_y); - } while(color==gfx->Color_light); + } while(color==gfx->Color[2]); // Carré "blanc" - gfx->Color_white = color; + gfx->Color[3] = color; do { if (++cursor_x>=gui->w) @@ -320,7 +320,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx) return 1; } color=Get_SDL_pixel_8(gui,cursor_x,cursor_y); - } while(color==gfx->Color_white); + } while(color==gfx->Color[3]); // Carré "transparent" gfx->Color_trans=color; do @@ -338,7 +338,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx) cursor_x=0; cursor_y=1; - while ((color=Get_SDL_pixel_8(gui,cursor_x,cursor_y))==gfx->Color_black) + while ((color=Get_SDL_pixel_8(gui,cursor_x,cursor_y))==gfx->Color[0]) { cursor_y++; if (cursor_y>=gui->h) @@ -2644,16 +2644,16 @@ void Set_current_skin(const char *skinfile, T_Gui_skin *gfx) Config.Skin_file = strdup(skinfile); } - Config.Fav_menu_colors[0] = gfx->Default_palette[gfx->Color_black]; - Config.Fav_menu_colors[1] = gfx->Default_palette[gfx->Color_dark]; - Config.Fav_menu_colors[2] = gfx->Default_palette[gfx->Color_light]; - Config.Fav_menu_colors[3] = gfx->Default_palette[gfx->Color_white]; + //Config.Fav_menu_colors[0] = gfx->Default_palette[gfx->Color[0]]; + //Config.Fav_menu_colors[1] = gfx->Default_palette[gfx->Color[1]]; + //Config.Fav_menu_colors[2] = gfx->Default_palette[gfx->Color[2]]; + //Config.Fav_menu_colors[3] = gfx->Default_palette[gfx->Color[3]]; // Reassign GUI color indices - MC_Black = gfx->Color_black; - MC_Dark = gfx->Color_dark; - MC_Light = gfx->Color_light; - MC_White = gfx->Color_white; + MC_Black = gfx->Color[0]; + MC_Dark = gfx->Color[1]; + MC_Light = gfx->Color[2]; + MC_White = gfx->Color[3]; MC_Trans = gfx->Color_trans; // Set menubars to point to the new data diff --git a/src/main.c b/src/main.c index 80455c49..54ce1bdb 100644 --- a/src/main.c +++ b/src/main.c @@ -674,10 +674,10 @@ int Init_program(int argc,char * argv[]) } Set_current_skin(Config.Skin_file, gfx); // Override colors - // Gfx->Default_palette[MC_Black]=Fav_menu_colors[0]=Config.Fav_menu_colors[0]; - // Gfx->Default_palette[MC_Dark] =Fav_menu_colors[1]=Config.Fav_menu_colors[1]; - // Gfx->Default_palette[MC_Light]=Fav_menu_colors[2]=Config.Fav_menu_colors[2]; - // Gfx->Default_palette[MC_White]=Fav_menu_colors[3]=Config.Fav_menu_colors[3]; + // Gfx->Default_palette[MC_Black]=Config.Fav_menu_colors[0]; + // Gfx->Default_palette[MC_Dark] =Config.Fav_menu_colors[1]; + // Gfx->Default_palette[MC_Light]=Config.Fav_menu_colors[2]; + // Gfx->Default_palette[MC_White]=Config.Fav_menu_colors[3]; // Compute_optimal_menu_colors(Gfx->Default_palette); // Infos sur les trames (Sieve) diff --git a/src/palette.c b/src/palette.c index 09e38f32..3086727a 100644 --- a/src/palette.c +++ b/src/palette.c @@ -453,9 +453,10 @@ void Set_nice_menu_colors(dword * color_usage,int not_picture) rgb[index].R=Main_palette[color].R; rgb[index].G=Main_palette[color].G; rgb[index].B=Main_palette[color].B; - Main_palette[color].R=Config.Fav_menu_colors[index].R; - Main_palette[color].G=Config.Fav_menu_colors[index].G; - Main_palette[color].B=Config.Fav_menu_colors[index].B; + // Should be Config.Fav_menu_colors[index] if using user colors + Main_palette[color].R=Gfx->Default_palette[Gfx->Color[index]].R; + Main_palette[color].G=Gfx->Default_palette[Gfx->Color[index]].G; + Main_palette[color].B=Gfx->Default_palette[Gfx->Color[index]].B; } // Maintenant qu'on a placé notre nouvelle palette, on va chercher quelles diff --git a/src/struct.h b/src/struct.h index 5812de6e..f46c2560 100644 --- a/src/struct.h +++ b/src/struct.h @@ -453,14 +453,8 @@ typedef struct /// Preview for displaying in the skin dialog byte Preview[16][173]; - /// Black GUI color index in skin palette - byte Color_black; - /// Dark GUI color index in skin palette - byte Color_dark; - /// Light GUI color index in skin palette - byte Color_light; - /// White GUI color index in skin palette - byte Color_white; + /// GUI color indices in skin palette: black, dark, light, white. + byte Color[4]; /// Transparent GUI color index in skin file byte Color_trans; diff --git a/src/windows.c b/src/windows.c index 43634c64..f3d28505 100644 --- a/src/windows.c +++ b/src/windows.c @@ -2849,12 +2849,12 @@ void Compute_optimal_menu_colors(T_Components * palette) // Recherche du noir Compute_4_best_colors_for_1_menu_color - (Config.Fav_menu_colors[0].R, Config.Fav_menu_colors[0].G, Config.Fav_menu_colors[0].B,palette,table); + (Gfx->Default_palette[Gfx->Color[0]].R, Gfx->Default_palette[Gfx->Color[0]].G, Gfx->Default_palette[Gfx->Color[0]].B,palette,table); MC_Black=table[0]; // Recherche du blanc Compute_4_best_colors_for_1_menu_color - (Config.Fav_menu_colors[3].R, Config.Fav_menu_colors[3].G, Config.Fav_menu_colors[3].B,palette,table); + (Gfx->Default_palette[Gfx->Color[3]].R, Gfx->Default_palette[Gfx->Color[3]].G, Gfx->Default_palette[Gfx->Color[3]].B,palette,table); if (MC_Black!=table[0]) MC_White=table[0]; else @@ -2862,7 +2862,7 @@ void Compute_optimal_menu_colors(T_Components * palette) // Recherche du gris clair Compute_4_best_colors_for_1_menu_color - (Config.Fav_menu_colors[2].R, Config.Fav_menu_colors[2].G, Config.Fav_menu_colors[2].B,palette,table); + (Gfx->Default_palette[Gfx->Color[2]].R, Gfx->Default_palette[Gfx->Color[2]].G, Gfx->Default_palette[Gfx->Color[2]].B,palette,table); if ( (MC_Black!=table[0]) && (MC_White!=table[0]) ) MC_Light=table[0]; else @@ -2875,7 +2875,7 @@ void Compute_optimal_menu_colors(T_Components * palette) // Recherche du gris foncé Compute_4_best_colors_for_1_menu_color - (Config.Fav_menu_colors[1].R, Config.Fav_menu_colors[1].G, Config.Fav_menu_colors[1].B,palette,table); + (Gfx->Default_palette[Gfx->Color[1]].R, Gfx->Default_palette[Gfx->Color[1]].G, Gfx->Default_palette[Gfx->Color[1]].B,palette,table); if ( (MC_Black!=table[0]) && (MC_White!=table[0]) && (MC_Light!=table[0]) ) MC_Dark=table[0]; else