IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Changement de curseur sur un clic maintenu, dans une NSView
Options
Arty
posté 17 Jan 2006, 13:39
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



Bonjour,

j'ai une NSView, et je voudrais changer le curseur quand l'utilisateur clique une fois (en maintenant son clic). Pour le moment j'utilise ça:

CODE
- (void)mouseDown:(NSEvent *)theEvent
{
    if([theEvent clickCount] == 1)
    {
        [[NSCursor closedHandCursor] push];
    }
    else if([theEvent clickCount] == 2)
    {
        /*...*/
    }    
}

- (void)mouseUp:(NSEvent *)theEvent
{
    [NSCursor pop];
}


Le problème c'est que quand l'utilisateur double-clique, le curseur closedHandCursor apparaît subrepticement au premier clic, ce qui n'est pas très joli... Y a-t-il un moyen d'éviter ça??

Merci d'avance,

-- Arthur;


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
schlum
posté 17 Jan 2006, 13:46
Message #2


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 449
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



Ca revient au problème de différencier un simple clic d'un double clic (quand on ne veut pas qu'un double clic fasse celle d'un simple clic avant celle du double) si j'ai bien compris.
La solution n'est pas du tout évidente... Il faut créer un NSTimer qui va lancer l'action du simple clic après le temps imparti laissé pour un double clic et invalider ce timer en cas de double clic.

Je sais pas si c'est très compréhensible ce que je dis laugh.gif


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Arty
posté 17 Jan 2006, 13:48
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



Si si, c'est clair, mais c'est vraiment la merde biggrin.gif

Je trouve con qu'Apple n'est pas fait une méthode du style mouseDoubleClicked:, d'autant plus que la vitesse du double-clic est réglée dans les préférences système "Souris & Clavier"...


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
schlum
posté 17 Jan 2006, 13:59
Message #4


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 449
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



En gros ça donne ça dans le mouseDown (ou mouseUp) :
CODE
if([theEvent clickCount]<=1)
        clickTimer = [[NSTimer scheduledTimerWithTimeInterval:(double)GetDblTime()/60.
                                                       target:self
                                                     selector:@selector(simpleClick:)
                                                     userInfo:theEvent
                                                      repeats:NO] retain];
else {
        // Annuler et libérer le timer
        [clickTimer invalidate];
        [clickTimer release];
        clickTimer = nil;
              ...
}


Ca comporte un défaut... C'est que le clic accuse un retard de la durée du temps imparti pour le double-clic.
Mais à priori c'est la seule solution puisque qu'au moment du clic, le programme ne peut pas deviner s'il va y en avoir un deuxième ou pas.
(Et c'est pour cela qu'Apple ne l'a pas implémenté avec deux fonctions...)


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Arty
posté 17 Jan 2006, 14:48
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



Le code marche très bien. Je ne connaissais pas la fonction GetDblTime(). Merci.


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
schlum
posté 17 Jan 2006, 14:57
Message #6


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 449
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



CITATION(Arty @ 17 Jan 2006, 14:48) [snapback]1513153[/snapback]

Le code marche très bien. Je ne connaissais pas la fonction GetDblTime(). Merci.

Pas de quoi tongue.gif J'ai galéré pour trouver la solution à cet épineux problème aussi... Si d'autres peuvent en profiter smile.gif
(je crois que GetDblTime() est un appel Carbon)


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Arty
posté 17 Jan 2006, 15:39
Message #7


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



Petite question qui n'a rien à voir, pas simple curiosité: toi qui a l'air de programmer pas mal avec Objective-C/Cocoa, tu fais quoi comme genre d'application?

(effectivement GetDblTime() est dans le framework Carbon)


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
schlum
posté 17 Jan 2006, 15:42
Message #8


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 449
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



CITATION(Arty @ 17 Jan 2006, 15:39) [snapback]1513242[/snapback]

Petite question qui n'a rien à voir, pas simple curiosité: toi qui a l'air de programmer pas mal avec Objective-C/Cocoa, tu fais quoi comme genre d'application?

(effectivement GetDblTime() est dans le framework Carbon)

Des IAs de jeux avec IHM surtout...
Pour l'instant je suis sur un gros projet de Sudoku (mais chut, secret wink.gif )


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Fotz
posté 17 Jan 2006, 15:48
Message #9


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 484
Inscrit : 16 Nov 2005
Lieu : Metz
Membre no 50 011



CITATION(schlum @ 17 Jan 2006, 15:42) [snapback]1513247[/snapback]

Des IAs de jeux avec IHM surtout...
Pour l'instant je suis sur un gros projet de Sudoku (mais chut, secret wink.gif )

Va falloir potasser du Knuth alors biggrin.gif ...


--------------------
Mac Mini Late 2012 Core i7 2,6 GHz, 16 Go RAM, disque dur Fusion Drive 1 To, Mac OS Mojave 10.14.6, Western Digital Red 2 To dans un dock Storeva DriveDock U3 USB 3.0 pour Time Machine

Les jeux-vidéo, c'est comme l'amour. Le plaisir solitaire c'est bien, mais à deux c'est mieux
Go to the top of the page
 
+Quote Post
Arty
posté 17 Jan 2006, 16:13
Message #10


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



CITATION(schlum @ 17 Jan 2006, 17:42) [snapback]1513247[/snapback]

Pour l'instant je suis sur un gros projet de Sudoku (mais chut, secret wink.gif )

Lol, énorme, j'ai écrit un petit programme pour les générer il y a quelques temps... le seul problème c'est que ça générait la table complète, mais ça me disait pas lesquels enlever pour que ce soit jouable wink.gif En fait c'était surtout pour m'amuser et passer le temps laugh.gif


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
schlum
posté 17 Jan 2006, 17:21
Message #11


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 449
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



Puisque ça a l'air de vous intéresser, je veux bien vous montrer où j'en suis laugh.gif
Attention, c'est même pas une version alpha encore wink.gif (c'en est même très loin)
http://cschlum2.free.fr/SudokuX.dmg


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Arty
posté 17 Jan 2006, 17:29
Message #12


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



Sympa! L'interface est très jolie!


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
schlum
posté 17 Jan 2006, 17:30
Message #13


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 449
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



PS : cherchez pas pour les intersections, c'est pas encore implémenté laugh.gif
Ensuite y aura les wings et autres fishy cycles, nishios, chaînes de forces, paires conjuguées etc.
+ Le moteur undo / redo à implémenter
+ Un format de fichier à définir
+ Les préférences générales de l'appli
+ Le solveur de force brut (avec gestion des erreurs de l'utilisateur)
+ L'aide à faire (ou pas biggrin.gif)
+ D'autres bricoles que j'ai en tête (chrono, sauvegarde d'états en cours etc.)
Bref, j'ai encore du boulot cool.gif

PS 2 : Apparemment le nib document ne fonctionne pas sous 10.3 sad.gif (je ne sais pas pourquoi)

PS 3 : On peut éditer les cases sans possibilité ou les cases initiales avec le double-clic wink.gif

PS 4 : C'est assez inspiré de "Sudoku Susser" mais je trouvais celui-ci pas très pratique à l'utilisation (bien que très "pro")


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
schlum
posté 17 Jan 2006, 22:47
Message #14


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 449
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



J'ai enlevé les incompatibilités du .nib pour 10.3... Si quelqu'un peut tester (j'en ai pas sous la main là).
Mais j'ai bien peur que l'incompatibilité soit à un niveau plus élevé. wacko.gif


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Fotz
posté 18 Jan 2006, 11:52
Message #15


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 484
Inscrit : 16 Nov 2005
Lieu : Metz
Membre no 50 011



Va falloir que tu nous fasses un jeu de Sudoku digne de ce nom, car on fait grise mine sous OS X face à Linux et son KSudoku.
Tu saurais en faire autant ?


--------------------
Mac Mini Late 2012 Core i7 2,6 GHz, 16 Go RAM, disque dur Fusion Drive 1 To, Mac OS Mojave 10.14.6, Western Digital Red 2 To dans un dock Storeva DriveDock U3 USB 3.0 pour Time Machine

Les jeux-vidéo, c'est comme l'amour. Le plaisir solitaire c'est bien, mais à deux c'est mieux
Go to the top of the page
 
+Quote Post
schlum
posté 18 Jan 2006, 12:14
Message #16


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 449
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



CITATION(Fotz @ 18 Jan 2006, 11:52) [snapback]1514415[/snapback]

Va falloir que tu nous fasses un jeu de Sudoku digne de ce nom, car on fait grise mine sous OS X face à Linux et son KSudoku.
Tu saurais en faire autant ?

Bah, Sudoku Susser est très bien fait quand même... Manque juste un peu d'ergonomie et c'est pas très joli ; il y a aussi apparemment de la fuite de mémoire puisque ça ralentit fortement après une longue utilisation. (mais bon, c'est RealBasic, faut pas trop en demander non plus laugh.gif ).

Sinon, j'ai mis en gros mon programme au dessus tongue.gif


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 20th April 2024 - 04:28