2010-11-18 12 views
6

Zastanawiam się, jak mogę pozbyć się niebieskich konturów, które kakao rysuje wokół wierszy w NSTableView/NSOutlineView, gdy kliknie się je prawym przyciskiem myszy.NSTableView: niebieski kontur na klikniętych prawym przyciskiem wierszy

NSTableView Outline http://tobidobi.com/nstableview_outline.png

To nie wydaje się być klasycznym „highlight” ani „Pierścień ostrości”, jeśli się nie mylę - tak, co to jest właściwie?

Jestem obecnie rysunek niestandardowych NSCells całkowicie sam - ale nie mogę dowiedzieć się, jak obaj
* narysować kontur ten sam, zbyt lub
* go pozbyć, lub
* przynajmniej zmień kolor

Wszelkie wskazówki są bardzo mile widziane! Dzięki!

Odpowiedz

12

Niestety, nie jestem świadomy żadnego udokumentowanego sposobu, aby to zrobić, nie licząc zapisywania własnego widoku tabeli.

Sposób przesłonić to:

- (void)drawContextMenuHighlightForRow:(NSInteger)row; 

Proszę złożyć wniosek enhancement z Apple, dzięki czemu nie będzie musiał polegać na metodach nieudokumentowanych robić to, co chcesz w przyszłości. Wygląda na to, że dwie inne metody podkreślenia widoku zostały spersonalizowane w 10.6, ale ten nie był. Zawsze uważałem, że jest nieco niezdarnie wyglądające, ale konieczne jest wskazanie, do którego wiersza odnosi się menu (niekoniecznie taki sam jak podświetlony wiersz).

+0

To załatwiło sprawę! Dziękuję, Nicholas! – Tobidobi

+0

Parametr typu jest nieprawidłowy !! To nie będzie działać poprawnie w wersji 64-bitowej. –

+0

Dzięki, nie robiłem tam 64-bitowego kakao. –

1

My NSTableView * mainTableView nie jest sub-klasyfikowane tak pozbyłem się tuż przed nim otwiera menu kontekstowe:

- (void)menuWillOpen:(NSMenu *)menu{ 
    NSInteger rightClicked = [mainTableView clickedRow]; 
    [mainTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:rightClicked] byExtendingSelection:NO]; 
    [mainTableView deselectRow: rightClicked]; 
    [mainTableView reloadData]; 
    { 
+0

ponowne załadowanie danych jest niepotrzebne, ale tak można już pójść. –