diff --git a/boutons.c b/boutons.c index f1c13f6b..15f62c49 100644 --- a/boutons.c +++ b/boutons.c @@ -5251,10 +5251,10 @@ void Bouton_Trame_Menu(void) Fenetre_Pos_Y+(Menu_Facteur_Y*(Bouton_Octet_insere->Pos_Y+2)), Menu_Facteur_X*7, Menu_Facteur_Y*7, (Octet_insere)?CM_Blanc:CM_Noir); - Fenetre_Definir_bouton_normal(109, 69,11,11,"\030",0,1,SDLK_UP); // 13 - Fenetre_Definir_bouton_normal(109, 93,11,11,"\031",0,1,SDLK_DOWN); // 14 - Fenetre_Definir_bouton_normal( 97, 81,11,11,"\033",0,1,SDLK_LEFT); // 15 - Fenetre_Definir_bouton_normal(121, 81,11,11,"\032",0,1,SDLK_RIGHT); // 16 + Fenetre_Definir_bouton_repetable(109, 69,11,11,"\030",0,1,SDLK_UP); // 13 + Fenetre_Definir_bouton_repetable(109, 93,11,11,"\031",0,1,SDLK_DOWN); // 14 + Fenetre_Definir_bouton_repetable( 97, 81,11,11,"\033",0,1,SDLK_LEFT); // 15 + Fenetre_Definir_bouton_repetable(121, 81,11,11,"\032",0,1,SDLK_RIGHT); // 16 for (Indice=0; Indice<12; Indice++) Fenetre_Definir_bouton_normal((Indice*23)+8,20,20,20,"",0,1,SDLK_F1+Indice); // 17 -> 28 @@ -5982,8 +5982,8 @@ void Bouton_Texte() // Taille texte Fenetre_Definir_bouton_saisie(220,43,3); // 7 Bouton_taille_texte=Fenetre_Liste_boutons_special; - Fenetre_Definir_bouton_normal(202,43,13,11,"-",0,1,SDLK_LAST); // 8 - Fenetre_Definir_bouton_normal(251,43,13,11,"+",0,1,SDLK_LAST); // 9 + Fenetre_Definir_bouton_repetable(202,43,13,11,"-",0,1,SDLK_LAST); // 8 + Fenetre_Definir_bouton_repetable(251,43,13,11,"+",0,1,SDLK_LAST); // 9 // Preview Fenetre_Definir_bouton_special(8,106,273,50); // 10 diff --git a/moteur.c b/moteur.c index e12eef08..99f715be 100644 --- a/moteur.c +++ b/moteur.c @@ -1458,6 +1458,7 @@ void Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y, Temp->Largeur =Largeur; Temp->Hauteur =Hauteur; Temp->Raccourci=Raccourci; + Temp->Repetable=0; Temp->Next=Fenetre_Liste_boutons_normal; Fenetre_Liste_boutons_normal=Temp; @@ -1465,7 +1466,34 @@ void Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y, Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur,Titre,Lettre_soulignee,Clickable); } +//------ Rajout d'un bouton à la liste de ceux présents dans la fenêtre ------ +void Fenetre_Definir_bouton_repetable(word Pos_X, word Pos_Y, + word Largeur, word Hauteur, + char * Titre, byte Lettre_soulignee, + byte Clickable, word Raccourci) +{ + struct Fenetre_Bouton_normal * Temp; + + Nb_boutons_fenetre++; + + if (Clickable) + { + Temp=(struct Fenetre_Bouton_normal *)malloc(sizeof(struct Fenetre_Bouton_normal)); + Temp->Numero =Nb_boutons_fenetre; + Temp->Pos_X =Pos_X; + Temp->Pos_Y =Pos_Y; + Temp->Largeur =Largeur; + Temp->Hauteur =Hauteur; + Temp->Raccourci=Raccourci; + Temp->Repetable=1; + + Temp->Next=Fenetre_Liste_boutons_normal; + Fenetre_Liste_boutons_normal=Temp; + } + + Fenetre_Dessiner_bouton_normal(Pos_X,Pos_Y,Largeur,Hauteur,Titre,Lettre_soulignee,Clickable); +} void Fenetre_Definir_bouton_palette(word Pos_X, word Pos_Y) { @@ -2004,7 +2032,17 @@ short Fenetre_Numero_bouton_clicke(void) { if (Fenetre_click_dans_zone(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Pos_X+Temp1->Largeur-1,Temp1->Pos_Y+Temp1->Hauteur-1)) { - Fenetre_Attribut1=Mouse_K; + if (Temp1->Repetable) + { + Effacer_curseur(); + Fenetre_Enfoncer_bouton_normal(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Largeur,Temp1->Hauteur); + Afficher_curseur(); + Tempo_jauge((Mouse_K==1)? Config.Valeur_tempo_jauge_gauche : Config.Valeur_tempo_jauge_droite); + Effacer_curseur(); + Fenetre_Desenfoncer_bouton_normal(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Largeur,Temp1->Hauteur); + Afficher_curseur(); + return Temp1->Numero; + } while(1) { Effacer_curseur(); @@ -2019,6 +2057,8 @@ short Fenetre_Numero_bouton_clicke(void) Effacer_curseur(); Fenetre_Desenfoncer_bouton_normal(Temp1->Pos_X,Temp1->Pos_Y,Temp1->Largeur,Temp1->Hauteur); Afficher_curseur(); + + Fenetre_Attribut1=Mouse_K; return Temp1->Numero; } } diff --git a/moteur.h b/moteur.h index b4b087cf..3881e9a4 100644 --- a/moteur.h +++ b/moteur.h @@ -49,6 +49,10 @@ void Fenetre_Definir_bouton_normal(word Pos_X, word Pos_Y, word Largeur, word Hauteur, char * Titre,byte Lettre_soulignee, byte Clickable, word Raccourci); +void Fenetre_Definir_bouton_repetable(word Pos_X, word Pos_Y, + word Largeur, word Hauteur, + char * Titre,byte Lettre_soulignee, + byte Clickable, word Raccourci); void Fenetre_Definir_bouton_palette(word Pos_X, word Pos_Y); void Fenetre_Effacer_tags(void); diff --git a/palette.c b/palette.c index 66b0e9eb..45a45123 100644 --- a/palette.c +++ b/palette.c @@ -860,8 +860,8 @@ void Bouton_Palette(void) Fenetre_Definir_bouton_scroller(225,20,31,7,1,Indice_Reduction_palette);// 17 Jauge_Reduction=Fenetre_Liste_boutons_scroller; - Fenetre_Definir_bouton_normal(266, 74,12,11,"+",0,1,SDLK_KP_PLUS); // 18 - Fenetre_Definir_bouton_normal(266,165,12,11,"-",0,1,SDLK_KP_MINUS); // 19 + Fenetre_Definir_bouton_repetable(266, 74,12,11,"+",0,1,SDLK_KP_PLUS); // 18 + Fenetre_Definir_bouton_repetable(266,165,12,11,"-",0,1,SDLK_KP_MINUS); // 19 Fenetre_Definir_bouton_normal(96,17,29,14,"Neg" ,1,1,SDLK_n); // 20 Fenetre_Definir_bouton_normal(66,62,29,14,"Inv" ,1,1,SDLK_i); // 21 diff --git a/struct.h b/struct.h index 735c61b0..bd8b45a2 100644 --- a/struct.h +++ b/struct.h @@ -73,6 +73,7 @@ struct Fenetre_Bouton_normal word Largeur; word Hauteur; byte Clickable; + byte Repetable; word Raccourci; struct Fenetre_Bouton_normal * Next; };