Changement de curseur sur un clic maintenu, dans une NSView |
Bienvenue invité ( Connexion | Inscription )
Changement de curseur sur un clic maintenu, dans une NSView |
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; -------------------- |
|
|
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 -------------------- I think therefore I Mac
|
|
|
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
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"... -------------------- |
|
|
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
|
|
|
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.
-------------------- |
|
|
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 J'ai galéré pour trouver la solution à cet épineux problème aussi... Si d'autres peuvent en profiter (je crois que GetDblTime() est un appel Carbon) -------------------- I think therefore I Mac
|
|
|
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) -------------------- |
|
|
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 ) -------------------- I think therefore I Mac
|
|
|
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 ) Va falloir potasser du Knuth alors ... -------------------- 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 |
|
|
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 ) 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 En fait c'était surtout pour m'amuser et passer le temps -------------------- |
|
|
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
Attention, c'est même pas une version alpha encore (c'en est même très loin) http://cschlum2.free.fr/SudokuX.dmg -------------------- I think therefore I Mac
|
|
|
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!
-------------------- |
|
|
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é
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 ) + D'autres bricoles que j'ai en tête (chrono, sauvegarde d'états en cours etc.) Bref, j'ai encore du boulot PS 2 : Apparemment le nib document ne fonctionne pas sous 10.3 (je ne sais pas pourquoi) PS 3 : On peut éditer les cases sans possibilité ou les cases initiales avec le double-clic 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
|
|
|
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é. -------------------- I think therefore I Mac
|
|
|
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 |
|
|
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 ). Sinon, j'ai mis en gros mon programme au dessus -------------------- I think therefore I Mac
|
|
|
Nous sommes le : 20th April 2024 - 04:28 |