-
Notifications
You must be signed in to change notification settings - Fork 116
Expand file tree
/
Copy pathChangeLog
More file actions
2855 lines (2175 loc) · 104 KB
/
Copy pathChangeLog
File metadata and controls
2855 lines (2175 loc) · 104 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2026-07-14 Richard Frith-Macdonald <rfm@gnu.org>
* Source/GSTheme.m:
* Source/NSImage.m:
Fix caching which prevented image updates in a theme from working
reliably: empty caches at the start of activation of a new theme.
2026-07-12 Todd White <todd.white@thalion.global>
* Headers/AppKit/NSTextTable.h: Give the NSTextBlockLayer constants
their AppKit values (NSTextBlockPadding is -1, not 0).
* Source/NSTextBlock.m: Index the width arrays by the layer offset from
NSTextBlockPadding so the padding layer maps to the first slot.
* Tests/gui/NSTextTable/basic.m: Check the layer constant values.
2026-07-12 Todd White <todd.white@thalion.global>
* Headers/AppKit/NSTextTable.h: Give the NSTextBlockDimension constants
their AppKit values; the height dimensions were one short because
AppKit leaves the value 3 unused.
* Tests/gui/NSTextTable/basic.m: Check the dimension constant values.
2026-07-12 Todd White <todd.white@thalion.global>
* Tests/gui/NSTextTable/basic.m:
* Tests/gui/NSTextTable/TestInfo:
Add tests for NSTextBlock, NSTextTable and NSTextTableBlock: the
defaults, the dimension, width, colour and vertical alignment
accessors, the table defaults and flags, and the table block position
accessors.
2026-07-12 Todd White <todd.white@thalion.global>
* Tests/gui/NSColorSpace/basic.m:
* Tests/gui/NSColorSpace/TestInfo:
Add tests for NSColorSpace: the model enum values, and the colour
space model, component count, name and singleton identity of the
standard colour spaces.
2026-07-12 Todd White <todd.white@thalion.global>
* Source/NSTreeNode.m (-[NSTreeNode indexPath]): Return an empty index
path for a root node rather than nil, matching AppKit.
* Tests/gui/NSTreeNode/basic.m: Check the root index path.
2026-07-12 Todd White <todd.white@thalion.global>
* Tests/gui/NSObjectController/basic.m:
* Tests/gui/NSObjectController/TestInfo:
Add tests for NSObjectController: the defaults, newObject, the content
and selected objects round-trip, add: and remove:, and how the
editable flag gates canAdd and canRemove.
2026-07-12 Todd White <todd.white@thalion.global>
* Tests/gui/NSTreeNode/basic.m:
* Tests/gui/NSTreeNode/TestInfo:
Add tests for NSTreeNode: the represented object, the leaf state, the
parent and child relationships, the descendant index paths and
descendantNodeAtIndexPath:.
2026-07-12 Todd White <todd.white@thalion.global>
* Tests/gui/NSFontDescriptor/basic.m:
* Tests/gui/NSFontDescriptor/TestInfo:
Add tests for NSFontDescriptor: the attribute round-trip, the point
size, postscript name and matrix extractors, and the descriptor
derivation methods.
2026-07-12 Todd White <todd.white@thalion.global>
* Tests/gui/NSTextAttachment/basic.m:
* Tests/gui/NSTextAttachment/TestInfo:
Add tests for NSTextAttachment: the default attachment cell, the file
wrapper round-trip and the attachment cell round-trip with its back
reference.
2026-07-12 Todd White <todd.white@thalion.global>
* Tests/gui/NSTextContainer/basic.m:
* Tests/gui/NSTextContainer/TestInfo:
Add tests for NSTextContainer: the defaults, the container size and
line fragment padding, the width and height tracking flags,
isSimpleRectangularTextContainer and containsPoint:.
2026-07-12 Todd White <todd.white@thalion.global>
* Tests/gui/NSHelpManager/basic.m:
* Tests/gui/NSHelpManager/TestInfo:
Add tests for NSHelpManager: the shared instance, the context help
set/get/remove round-trip and the context help mode flag.
2026-07-12 Todd White <todd.white@thalion.global>
* Headers/AppKit/NSTrackingArea.h: Give the NSTrackingAreaOptions
constants their AppKit values; the active and later options were off
by the unused 0x08 bit.
* Source/NSTrackingArea.m (-[NSTrackingArea initWithRect:options:owner:
userInfo:]): Retain the userInfo argument rather than the nil ivar, so
-userInfo returns the dictionary that was passed in.
* Tests/gui/NSTrackingArea/basic.m:
* Tests/gui/NSTrackingArea/TestInfo:
New test for the option values, the accessors and copy.
* Tests/gui/NSTextView/typingAttributes.m:
* Tests/gui/NSTextView/TestInfo:
Add tests for the NSTextView typing attributes and related state: the
defaults, the string, the way setFont: and setTextColor: update the
typing attributes, setTypingAttributes:, and the editable/selectable
coupling.
* Tests/gui/NSSegmentedCell/model.m:
* Tests/gui/NSSegmentedCell/TestInfo:
Add tests for the NSSegmentedCell model: the defaults, the segment
count, the per-segment label, width, enabled, tag and tool tip
accessors, the single-selection tracking, selection by tag, and the
segment style.
* Source/NSScroller.m (-[NSScroller setFloatValue:knobProportion:]):
Clamp the value into [0,1] before the redisplay marker is set, so a
value of -1 (which matched the marker and was skipped by setDoubleValue:)
clamps to 0 as OS X does.
* Tests/gui/NSScroller/clampFloatValue.m:
* Tests/gui/NSScroller/TestInfo:
New test for the value clamping.
* Tests/gui/NSScroller/value.m:
* Tests/gui/NSScroller/TestInfo:
Add tests for the NSScroller value model: the orientation-dependent
arrow position, the default hit part and control size, setting the value
and knob proportion, the clamping into [0,1], and the accessors.
* Source/NSMatrix.m (-[NSMatrix cellClass]): Return Nil when the matrix
uses a cell prototype, as OS X does, rather than the prototype cell's
class.
* Tests/gui/NSMatrix/cellClassPrototype.m:
* Tests/gui/NSMatrix/TestInfo:
New test for the cell class / prototype relationship.
* Tests/gui/NSMatrix/grid.m:
Add tests for the NSMatrix cell grid: the dimensions, adding, inserting
and removing rows and columns, the prototype and cell class, the cell
size and mode, getRow:column:ofCell:, cellWithTag: and
putCell:atRow:column:.
* Source/NSTableColumn.m (-[NSTableColumn setResizable:], -[NSTableColumn
setResizingMask:]): Keep the resizable flag and the resizing mask
consistent, as OS X does. setResizable: now sets the mask to the
auto/user resizing combination or to no resizing, and setResizingMask:
updates the resizable flag from whether the mask allows any resizing.
* Tests/gui/NSTableColumn/resizableMask.m:
* Tests/gui/NSTableColumn/TestInfo:
New test for the resizable/mask relationship.
* Tests/gui/NSTableColumn/model.m:
* Tests/gui/NSTableColumn/TestInfo:
Add tests for the NSTableColumn model: the identifier, the defaults, the
width clamping, the resizing mask, the title, the default header and
data cells, and the editable/hidden accessors.
* Source/NSPopUpButtonCell.m (-[NSPopUpButtonCell removeItemAtIndex:]):
Keep the correct selection when removing an item, as OS X does. When
the selected item is removed, select the first remaining item rather
than leaving the popup with no selection. When another item is
removed, re-select the item that was selected: removing an item posts a
notification that re-syncs the selection from the menu view's
highlighted index, which does not track the removed item, so the
selection would otherwise move to a different item.
* Tests/gui/NSPopUpButtonCell/removeSelected.m:
* Tests/gui/NSPopUpButtonCell/TestInfo:
New test for the selection after removing an item.
* Tests/gui/NSPopUpButtonCell/menu.m:
* Tests/gui/NSPopUpButtonCell/TestInfo:
Add tests for the NSPopUpButtonCell menu model: the defaults, adding,
inserting and removing titled items, the automatic first-item
selection, duplicate-title handling, the item and index queries,
selection, and the pull-down/autoenable/edge/arrow-position accessors.
* Tests/gui/NSStepper/control.m:
* Tests/gui/NSStepper/TestInfo:
Add tests for the NSStepper control: the cell class, the value defaults,
the forwarding of the min/max, increment, autorepeat and value-wrapping
setters to the cell, and the value clamping.
* Source/NSComboBoxCell.m (-[NSComboBoxCell completedString:]): Return
nil when no item completes the substring, as OS X does, rather than
echoing the substring back.
* Tests/gui/NSComboBoxCell/completedStringNoMatch.m:
* Tests/gui/NSComboBoxCell/TestInfo:
New test for the no-match case.
* Tests/gui/NSComboBoxCell/list.m:
* Tests/gui/NSComboBoxCell/TestInfo:
Add tests for the NSComboBoxCell internal item list: the defaults,
adding, inserting and removing items, the item and object-value
queries, selection by index and object value, and completedString:.
* Source/NSTextFieldCell.m (-[NSTextFieldCell initTextCell:]): Use the
control text colour for the default text colour, as OS X does, rather
than the generic text colour.
* Tests/gui/NSTextFieldCell/defaultTextColor.m:
* Tests/gui/NSTextFieldCell/TestInfo:
New test for the default text colour.
* Source/NSMatrix.m (-[NSMatrix selectCellAtRow:column:]): Deselect the
existing selection in list mode before selecting the cell, so the method
selects a single cell as OS X does. Mouse dragging, which uses other
methods, still extends the selection.
* Tests/gui/NSMatrix/listSingleSelect.m:
* Tests/gui/NSMatrix/TestInfo:
New test for the single selection.
* Source/NSSliderCell.m (-[NSSliderCell closestTickMarkValueToValue:]):
Break exact halves towards the lower tick, matching OS X (2.5 snapped
to 3 rather than 2 with integer ticks).
* Tests/gui/NSSliderCell/tickRounding.m:
New test for the tie rounding.
* Source/NSSecureTextField.m (-[NSSecureTextFieldCell initTextCell:]):
Default echosBullets to YES so a freshly created cell echoes bullets,
matching NSSecureTextField and Apple. The flag was left at NO because
no initialiser set it.
* Tests/gui/NSSecureTextField/echosBulletsDefault.m:
* Tests/gui/NSSecureTextField/TestInfo:
New test for the default.
* Tests/gui/NSSecureTextField/echo.m:
* Tests/gui/NSSecureTextField/TestInfo:
Add tests for NSSecureTextField and NSSecureTextFieldCell: the
hard-wired cell class, the echosBullets flag and its delegation from
the field to the cell, the fixed-pitch font substitution, the stored
string value and the NSCoding round trip.
* Tests/gui/NSTextFieldCell/attributes.m:
* Tests/gui/NSTextFieldCell/TestInfo:
Add tests for NSTextFieldCell: the drawsBackground, bezel style,
background colour and placeholder defaults, the colour and bezel-style
accessors, the string/attributed placeholder pair and the stored string
value.
2026-07-12 Todd White <todd.white@thalion.global>
* Source/NSParagraphStyle.m (-[NSMutableParagraphStyle setTabStops:]):
Keep the tab stops in the order given rather than sorting them, as OS X
does. addTabStop: still inserts a single stop in sorted position.
* Tests/gui/NSParagraphStyle/tabStopOrder.m:
New test for the preserved order.
2026-07-12 Todd White <todd.white@thalion.global>
* Tests/gui/NSTableHeaderCell/headerCell.m:
* Tests/gui/NSTableHeaderCell/TestInfo:
Add tests for NSTableHeaderCell: the defaults from initTextCell:, the
string value, the highlight handling and the sort-indicator rectangle.
2026-07-12 Todd White <todd.white@thalion.global>
* Tests/gui/NSFormCell/title.m:
* Tests/gui/NSFormCell/TestInfo:
Add tests for NSFormCell: the defaults, the title, title alignment,
title font and title writing-direction accessors, the manual and
automatic behaviour of titleWidth and titleWidth:, the mnemonic title,
the attributed title and the string/attributed placeholder pair.
* Tests/gui/NSStepperCell/valueLogic.m:
* Tests/gui/NSStepperCell/TestInfo:
Add tests for NSStepperCell: the defaults, the increment, autorepeat
and valueWraps accessors, the value clamping in setMaxValue:,
setMinValue: and setObjectValue: (including the fallback to the minimum
for a non-numeric or nil object and when the minimum exceeds the
maximum), and the keyed and non-keyed archiving round trips.
* Tests/gui/NSPrintInfo/dictionary.m:
Add tests for NSPrintInfo: the defaults from initWithDictionary:, the
paper name/size relationship, the way setPaperSize: and setOrientation:
keep the size and orientation consistent, the margin, pagination,
centering and jobDisposition accessors, the initWithDictionary: overlay
and copy independence.
* Source/NSButtonCell.m (-[NSButtonCell stringValue]): Return the
string form of the state ("1", "0" or "-1"). An off cell gave "" and a
mixed cell "1"; both now match the state as OS X does.
* Tests/gui/NSButtonCell/stringValue.m:
New test for the string value in each state.
* Source/NSTextList.m (-[NSTextList markerForItemNumber:]): Use the
small black and white square characters for the {square} and {box}
markers, matching AppKit, instead of the full-size squares.
* Tests/gui/NSTextList/basic.m: Check the {circle}, {square}, {box},
{hyphen} and {diamond} glyph markers.
2026-07-03 Todd White <todd.white@thalion.global>
* Tests/gui/NSTextTab/basic.m:
* Tests/gui/NSTextTab/TestInfo:
Add tests for NSTextTab: the type/alignment mappings in both directions
(including the decimal tab from a right alignment with column
terminators), the accessors, compare:, isEqual:/hash and copying.
* Source/NSTextList.m (-[NSTextList markerForItemNumber:]): Start the
alphabetic markers at the first letter. Item numbers are 1-based (the
starting item number defaults to 1, and {decimal} maps item 1 to "1"),
but {lower-alpha}, {lower-latin}, {upper-alpha} and {upper-latin} added
the whole item to 'a'/'A', so the first item was "b"/"B" instead of
"a"/"A".
* Tests/gui/NSTextList/basic.m:
* Tests/gui/NSTextList/TestInfo:
New tests for the accessors and markerForItemNumber:.
* Tests/gui/NSBezierPath/appendingAndContainment.m:
Add tests for NSBezierPath areas not covered by the existing tests: the
append helpers (appendBezierPathWithRect:, appendBezierPathWithPoints:count:,
appendBezierPath:), elementAtIndex:associatedPoints: for a curve,
containsPoint:, transformUsingAffineTransform:, the relative moves and
current-point state, isEmpty and the line attributes.
* Source/NSGradient.m (-[NSGradient interpolatedColorAtLocation:]):
Measure the blend fraction from the lower stop rather than the upper
one. As written the interpolated colour was mirrored within each
segment -- correct only at the stops and the exact midpoint -- so a
location nearer one stop returned the colour of the other.
* Tests/gui/NSGradient/basic.m:
* Tests/gui/NSGradient/TestInfo:
New tests for construction, the colour stops and the location
interpolation.
* Tests/gui/NSColor/basic.m:
* Tests/gui/NSColor/TestInfo:
Add tests for NSColor: the RGB, HSB, CMYK and white component
accessors and device-colour clamping, the RGB/HSB and CMYK/RGB
conversions with an RGB/HSB round trip, colorWithAlphaComponent:,
blendedColorWithFraction:ofColor: and colorUsingColorSpaceName:.
* Tests/gui/NSShadow/basic.m:
* Tests/gui/NSShadow/TestInfo:
Add tests for NSShadow: the defaults, the offset, blur-radius and
colour accessors, copying (including independence from the original)
and the keyed and non-keyed archiving round trips.
* Tests/gui/NSAffineTransform/basic.m:
* Tests/gui/NSAffineTransform/TestInfo:
Add tests for the AppKit/GNUstep additions to NSAffineTransform:
rotationAngle, isRotated, setFrameRotation:, setMatrix:/getMatrix:,
deltaPointInMatrixSpace:, concatenateWithMatrix:, boundingRectFor:result:
(including a rotated rect), makeIdentityMatrix and
takeMatrixFromTransform:.
2026-06-27 DTW-Thalion <todd.white@thalion.global>
* Source/GSTable.m (-[GSTable initWithCoder:]): Validate the row and
column counts decoded from the archive (reject negative values and a
row*column product that overflows int) before using them to size the
allocations, in both the keyed and non-keyed paths, and guard the
unconditional origin writes; a negative count made the allocation size
wrap to NULL and the origin write then dereferenced it.
* Tests/gui/GSTable/gsTableCoderCounts.m: New regression test.
* Source/NSParagraphStyle.m (-[NSParagraphStyle initWithCoder:]):
Heap-allocate the tab-stop scratch arrays in the non-keyed decoding
path instead of using stack VLAs sized by the tab-stop count read from
the archive; a large count overflowed the stack before any element was
read.
* Tests/gui/NSParagraphStyle/paragraphStyleCoderTabStops.m: New
regression test.
* Source/NSBitmapImageRep+GIF.m (-_initBitmapFromGIF:): Reject a GIF
whose image references no colour map (neither a per-image nor a global
colour table) instead of dereferencing NULL, and clamp a pixel value
that indexes beyond the colour map (which may have fewer than 256
entries) before reading colorMap->Colors[], which otherwise read past
the colour-map allocation.
* Tests/gui/NSBitmapImageRep/gifColorMapBounds.m: New regression test
(compiled only when a GIF library is available).
* Source/NSBitmapImageRep+PNG.m (-_initBitmapFromPNG:): Compute the
decoded-image buffer size (bytes_per_row * height) in size_t and reject
a header whose size arithmetic overflows, check the allocation for
NULL, and allocate the row-pointer array on the heap rather than as a
stack VLA sized by the untrusted image height. A large image (libpng
permits dimensions up to 1000000) overflowed the int product,
undersizing the buffer, and png_read_image() then wrote the decoded
rows past it.
* Source/NSBitmapImageRep+JPEG.m (-_initBitmapFromJPEG:): Compute the
image buffer size (output_height * rowSize) in size_t and reject a
header whose 32-bit product overflows before allocating; a wrapped
size allocated successfully but far too small, and the per-scanline
copy then wrote past it.
* Tests/gui/NSBitmapImageRep/pngAllocationOverflow.m: New regression
test.
* Tests/gui/NSBitmapImageRep/jpegAllocationOverflow.m: New regression
guard (positive control; the overflow itself is proven with an
AddressSanitizer replica in the pull request).
2026-06-27 DTW-Thalion <todd.white@thalion.global>
* Tests/gui/NSBitmapImageRep/icnsImportOverflow.m: Use a real 32x32
il32 icon (generated with libicns) as the positive control so it
decodes with both the system libicns library and the built-in GNUstep
ICNS reader; the previous hand-built icon was rejected by libicns and
failed the test on a libicns build.
* Tests/gui/NSBitmapImageRep/icnsMaskBounds.m: Compile the
truncated-mask test only when the system libicns library is absent. The
over-read it guards is in the built-in ICNS reader; libicns is unaffected
and rejects the truncated icon outright. Detected with
__has_include(<icns.h>) (the condition libs-gui itself uses to enable
libicns), as config.h, which defines HAVE_LIBICNS, is not installed for
tests.
2026-06-26 DTW-Thalion <todd.white@thalion.global>
* Source/NSBitmapImageRep+ICNS.m (-_initBitmapFromICNS:)
(+_imageRepsWithICNSData:): Stop the element walk when an element has
a size of zero. Such an element never advanced the walk offset, so an
ICNS file that contained one made the reader loop forever.
* Tests/gui/NSBitmapImageRep/icnsZeroElement.m: New regression test.
* Source/NSBitmapImageRep+ICNS.m
(icns_get_image32_with_mask_from_family): Bound the 8-bit mask copy
and the RLE icon decode to the end of the element data. The mask
loop copied imageHeight*imageWidth bytes, and the RLE run loops read
run bytes, without checking against the element end, so a truncated
icon or mask element caused a read past the heap allocation.
* Tests/gui/NSBitmapImageRep/icnsMaskBounds.m: New regression test.
* Source/NSBitmapImageRep+ICNS.m (icns_import_family_data): Bounds
check the icns family resource size read from the file before using
it for malloc() and memcpy(). A value below ICNS_HEADER_SIZE made
el_size - ICNS_HEADER_SIZE underflow to a huge length, and a value
larger than the supplied data made the memcpy read past the end of
the input; either overran the heap when opening a crafted .icns
file.
* Tests/gui/NSBitmapImageRep/icnsImportOverflow.m: New regression
* Source/NSBitmapImageRep.m (-_initFromTIFFImage:number:): Reject a
PHOTOMETRIC_PALETTE TIFF whose bitsPerSample is not 8. NSTiffRead
expands a palette image to 24-bit RGB, writing three bytes per
pixel, while the bitmap was allocated using the file's smaller
bitsPerSample; a crafted 4-bit (or 1/2-bit) palette image therefore
overran the image buffer.
(-_initBitmapFromTIFF:): Honour the return value of
-_initFromTIFFImage:number: so a failed decode returns nil rather
than a deallocated instance.
* Tests/gui/NSBitmapImageRep/tiffPaletteOverflow.m: New regression
test for the above.
2026-05-07 Fred Kiefer <FredKiefer@gmx.de>
* configure
* configure.ac: Autoupdate and autoconf.
2026-05-03 Gregory John Casamento <greg.casamento@gmail.com>
* configure
* configure.ac: Update to fix libao detection by finding
ao_play so we know we have both the header, and the correct
version of libao.
2026-01-22 Gregory Casamento <greg.casamento@gmail.com>
* Source/NSDiffableDataSource.m: Fix recursive loop in
collectionView:itemForRepresentedObjectAtIndexPath: by correcting
_itemForIndexPath method to use _indexPathsToItems instead of
_itemsToIndexPaths. Add recursion guards with _creatingIndexPaths
to prevent infinite loops during item creation.
* Source/NSDiffableDataSource.m: Implement diffable data source
for both
collection view and table view.
* Headers/AppKit/NSDiffableDataSource.h: Add _creatingIndexPaths
instance
variable to both NSCollectionViewDiffableDataSource and
NSTableViewDiffableDataSource for recursion protection.
* Source/NSCollectionView.m: Fix makeItemWithIdentifier method.
2026-02-08 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSDataLink.h: Improved ivar names and updated
interface for better clarity.
* Headers/AppKit/NSDataLinkManager.h: Enhanced interface with
additional delegate callbacks and improved method signatures.
* Source/NSDataLink.m: Complete implementation of NSDataLink
functionality including file monitoring, link updates, and
delegate callbacks. Improved code structure and fixed issues.
* Source/NSDataLinkManager.m: Full implementation of
NSDataLinkManager with proper link tracking, file monitoring,
and notification handling. Added support for delegate callbacks
and link registration.
* Source/NSDataLinkPanel.m: Enhanced NSDataLinkPanel implementation
with proper UI controls and link management.
* Documentation/NSDataLinkDelegateCallbacks.md: Added comprehensive
documentation for NSDataLinkDelegate callback methods.
* Examples/NSDataLinkExample.m: Added example code demonstrating
usage of NSDataLink and NSDataLinkManager.
* Panels/English.lproj/GSDataLinkPanel.gorm/data.classes:
* Panels/English.lproj/GSDataLinkPanel.gorm/data.info:
* Panels/English.lproj/GSDataLinkPanel.gorm/objects.gorm:
* Panels/Spanish.lproj/GSDataLinkPanel.gorm/data.classes:
* Panels/Spanish.lproj/GSDataLinkPanel.gorm/data.info:
* Panels/Spanish.lproj/GSDataLinkPanel.gorm/objects.gorm:
Updated GSDataLinkPanel UI resources for English and Spanish
localizations.
2026-02-01 Gregory John Casamento <greg.casamento@gmail.com>
* Tools/say/say.m: Fix warning about casting a non-mutalbe string to
a mutable one.
2026-02-01 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSTableView.h: Add references to NSTableRowView.h for
view-based rendering.
* Source/NSTableView.m: Refactored to support view-based rendering
using NSTableRowView. Updated implementation to utilize NSTableRowView
when in view-based mode.
* Source/GSThemeDrawing.m: Factored out NSTableView and NSOutlineView
rendering logic for improved modularity.
2026-01-09 Richard Frith-Macdonald <rfm@gnu.org>
* Headers/Additions/GNUstepGUI/GSServicesManager.h:
* Source/NSApplication.m:
* Source/NSWorkspace.m:
Allow non-gnustep apps to be used via app wrappers (a bundle of a
script to launch the program and an info plist describing it etc)
to open URLs. The -GSOpenURL command line parameter tells the script
which URL to open (like the -GSFilePath parameter already supported
for opening files). The info plist would need to contain the normal
CFBundleURLTypes entry used to spewcify the roles (Editor/Viewer) and
URL schemes the app supports.
2026-01-09 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSWorkspace.m: Remove NSWebBrowser as its addition only seems
to confuse things.
2025-12-14 Richard Frith-Macdonald <rfm@gnu.org>
* Source/GSServicesManager.h: New method to provide services.
* Source/GSServicesManager.m: Improve reliability of GSProvideService()
by ensuring that the data types of the pasteboard are used to find any
matching service. Implement a version which doesn't generate alert
panels, so we can quietly go on to trying to open URLs some other way.
Set the default timeout for services which do not return a result to
be 1 second rather than 30.
* Source/NSPasteboard.m: Make reading/writing string data from/to a
pasteboard work for URLs.
* Source/NSWorkspace.m: When looking for an Open URL service, use the
correct name and use both string and URL types so that services can
work whether they are expecting strings or more specific URL data.
If we can't open a URL using a service, raise an alert panel and then
treat the URL as an unknown file type.
* Tools/make_services.m: Added some diagnostics and fixed the code to
check that dynamically registered services are still available (the
app that registered them is still running).
2025-11-27 Richard Frith-Macdonald <rfm@gnu.org>
* Headers/AppKit/NSBezierPath.h:
* Headers/AppKit/NSColor.h:
* Headers/AppKit/NSColorPanel.h:
* Headers/AppKit/NSColorPicker.h:
* Headers/AppKit/NSColorWell.h:
* Headers/AppKit/NSComboBox.h:
* Headers/AppKit/NSComboBoxCell.h:
* Headers/AppKit/NSControl.h:
* Headers/AppKit/NSController.h:
* Headers/AppKit/NSCursor.h:
* Headers/AppKit/NSCustomImageRep.h:
* Headers/AppKit/NSDatePicker.h:
* Headers/AppKit/NSDockTile.h:
* Headers/AppKit/NSDrawer.h:
* Headers/AppKit/NSEPSImageRep.h:
* Headers/AppKit/NSEvent.h:
* Headers/AppKit/NSFileWrapper.h:
* Headers/AppKit/NSFileWrapperExtensions.h:
* Headers/AppKit/NSFont.h:
* Headers/AppKit/NSFontAssetRequest.h:
* Headers/AppKit/NSFontCollection.h:
* Headers/AppKit/NSImageView.h:
* Headers/AppKit/NSInputManager.h:
* Headers/AppKit/NSInputServer.h:
Remove incorrectly placed <title> and <abstract> elements in comments
to prevent breakage of documentation generation.
* Source/DocMakefile:
* Documentation/GNUmakefile.postamble:
Use new xxx_AGSDOC_INSTALL_BUNDLE to for relative links between
projects.
2025-05-29 Gregory John Casamento <greg.casamento@gmail.com>
* config.make.in: Add HAVE_* variables.
* configure
* configure.ac: Look for relevant libraries
* Headers/Additions/GNUstepGUI/config.h.in
* Headers/AppKit/NSMovie.h
* Headers/AppKit/NSMovieView.h
* Source/GNUmakefile
* Source/GNUmakefile.preamble
* Source/GSAudioPlayer.h
* Source/GSAudioPlayer.m: Added to play audio from avcodec
* Source/GSMovieView.h
* Source/GSMovieView.m: Subclass to handle video playback
* Source/NSMovie.m
* Source/NSMovieView.m: Cleanup and add textfield.
* Source/NSSound.m: Cleanup NSSound, add support for playing
ffmpeg movies using NSMovie, NSMovieView.
2025-04-30 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSColorSpace.h: Add NSColorSpaceModel*
enumerated values.
2025-02-11 Richard Frith-Macdonald <rfm@gnu.org>
* ANNOUNCE:
* BUGS:
* INSTALL:
* NEWS:
* Source/DocMakefile:
* Version: Updates for 0.32.0 release
2024-11-08 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSBrowser.h: Add dictionary to hold relationships.
* Source/NSBrowser.m: Add logic in methods to support bindings,
expose bindings in +initialize.
* Source/NSTextFieldCell.m: Minor fix to NSTextField for displaying
binding values.
2024-10-31 Richard Frith-Macdonald <rfm@gnu.org>
* Source/GSServicesManager.m: fix -laterDate: conditionals to be true
only when file date has been updated (returned value != receiver).
2024-10-29 Fred Kiefer <FredKiefer@gmx.de>
* Headers/AppKit/NSLayoutAnchor.h: Add missing include that is
required after a change in base.
* Source/NSTableView.m: Forward declare new methods.
2024-08-29 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSBundleAdditions.m: Quick fix for .gorm loading
not returning top level objects.
2024-08-18 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSTreeController.h: Update header
* Headers/AppKit/NSTreeNode.h: Update header
* Source/GNUmakefile: Add new class
* Source/GSBindingHelpers.h: Add NSString category
* Source/GSControllerTreeProxy.[hm]: Proxy class
for NSTreeController, a subclass of NSTreeNode.
* Source/GSThemeDrawing.m: Optimize code a bit and
add changes for bindings.
* Source/GSXib5KeyedUnarchiver.m: Add support for new keys
on NSTreeController.
* Source/NSKeyValueBinding.m: Add new methods to
GSKeyValueBinding
* Source/NSOutlineView.m: Add support for bindings.
* Source/NSTreeController.m: Implement new methods.
* Source/NSTreeNode.m: Implement new methods
2024-07-25 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSBrowser.h: Add declarations for
10.6 delegate methods for item-based browsers.
* Source/NSBrowser.m: Add support for 10.6 item-based
delegate methods.
2024-06-28 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/AppKit.h: Add NSMenuToolbarItem.h
* Headers/AppKit/NSMenuToolbarItem.h: Declarations
for NSMenuToolbarItem.
* Images/GNUmakefile: Add new image
* Images/nsmapping.strings: Add image mapping
* MISSING: Remove this class from the list
* Source/GNUmakefile: Add class to build
* Source/NSMenuToolbarItem.m: Implementation of
NSMenuToolbarItem.
2024-06-07 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/Additions/GNUstepGUI/GSTheme.h: Add new methods
for rendering view-based outline/table views.
* Headers/AppKit/NSTableRowView.h: Add implementation
* Headers/AppKit/NSTableView.h: Add references to
NSTableRowView.h
* Source/GSThemeDrawing.m: Factor out NSTableView and
NSOutlineView rendering so that GSThemeDrawing methods
are as minimal as possible.
* Source/NSOutlineView.m: Refactor to use new methods
to generate NSTableRowView when it is view-based.
* Source/NSTableRowView.m: Add implementation of
NSTableRowView implementation.
* Source/NSTableView.m: Update to use NSTableRowView
when it is view-based.
2024-06-05 Richard Frith-Macdonald <rfm@gnu.org>
* ChangeLog: Update for new release
* ANNOUNCE:
* NEWS:
* Documentation/news.texi: Update of release notes for 0.31.1.
* Version: bump to 0.31.1
2024-06-03 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSMenuitem.m:
Fix bug in decoding of archived menu item modifier mask.
2024-05-30 Richard Frith-Macdonald <rfm@gnu.org>
* Source/GSDisplayServer.m:
* Source/NSGraphicsContext.m:
* Source/NSWorkspace.m:
Avoid using old gnustep_global_lock (removed from base)
2024-05-26 Fred Kiefer <FredKiefer@gmx.de>
* ChangeLog: Update for new release
* ANNOUNCE:
* NEWS:
* Documentation/news.texi: Update of release notes for 0.31.0.
* Version: bump to 0.31.0
2024-05-13 Adam Fox <adam.fox@keysight.com>
* Source/NSParagraphStyle.m (-init): Apply the old default
tab stop behavior from +defaultParagraphStyle to -init,
and therefore also to +defaultParagraphStyle.
2024-03-18 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSTextView.m: Add support for NSFilenamenPboardType.
Change by OnFlApp (https://githup.com/onflapp)
2023-12-28 Fred Kiefer <FredKiefer@gmx.de>
* Documentation/manual/AppKit.texi: Move table of contents outside
of title page. This fixes building the documentation with newer texinfo.
2023-12-27 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSView.h: Add ivar for NSShadow, update
version of class for NSArchiver so this can be properly
read and saved in .gorm files.
* Source/GSXib5KeyedUnarchiver.m: Add code to handle XIB
keys for NSShadow.
* Source/NSShadow.m: Minor cleanup to use ASSIGN macro
in -initWithCoder:
* Source/NSView.m: Add code to -encodeWithCoder: and
-initWithCoder: to properly handle NSViewShadow.
2023-11-27 Gregory John Casamento <greg.casamento@gmail.com>
* Source/GSGormLoading.m
* Source/GSNibLoading.m
* Source/GSXibLoading.m: Remove calls to respondsToSelector:
for awakeFromNib. This method is now implemented on a
category on NSObject called NSNibAwaking. Also add a
call to prepareForInterfaceBuilder when we are in Gorm/IB.
2023-11-25 Gregory John Casamento <greg.casamento@gmail.com>
* Documentation/manual/applicationmakefiles.texi: Update
documentation.
* Documentation/manual/gnustepapplication.texi: Update
documentation. Update installation path default.
* Documentation/manual/interfacefiles.texi: Update
documentation. Add information about model files (xib,
nib, etc).
* Documentation/manual/intro.texi: Update
documentation. Add information about themes.
2023-11-25 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSNibLoading.h: Add declaration for
-prepareForInterfaceBuilder to NSNibLoading category.
* Source/NSNib.m: Add new empty method implementation for
-awakeFromNib and -prepareForInterfaceBuilder to NSNibLoading
category on NSObject.
* Source/NSView.m: Remove empty implementation of awakeFromNib.
2023-09-05 Richard Frith-Macdonald <rfm@gnu.org>
* Source/DocMakefile: Fix issue #198 ... headers had added a new
APPKIT_EXPORT_CLASS value added without telling autogsdoc how to
handle it, breaking parsing. Mapped it to an empty string.
2023-08-30 Gregory John Casamento <greg.casamento@gmail.com>
* Source/GSXib5KeyedUnarchive.m: Fix for issue#192. Added code to
-decodeObjectForXib:forClassName:withID: to decode toolTip using
alternative format described in the issue.
2023-08-13 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSSwitch.m (-drawRect:): Correct drawing as suggested by
Austin Clow (dr_clow@me.com).
2023-02-12 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSCollectionView.m: Implementation of methods
to support selection by indexPaths and use of NSCollectionViewLayout
* Source/NSCollectionViewLayout.m: Implementation of
NSCollectionViewLayout class to support custom collection view
layouts.
* Source/NSCollectionViewGridLayout.m: Implementation of the
Grid layout.
* Source/NSCollectionViewFlowLayout.m: Implementation of the
flow layout.
* Source/NSCollectionViewItem.m: Minor changes to support
new functionality.
* Headers/AppKit/NSCollectionView.h: Add new methods.
* Headers/AppKit/NSCollectionViewLayout.h:
* Headers/AppKit/NSCollectionViewGridLayout:
* Headers/AppKit/NSCollectionViewFlowLayout: Add new classes.
2023-01-03 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSDrawer.m: Open drawer on the opposite edge if needed when
close to the boundary of the screen.
2022-12-29 Richard Frith-Macdonald <rfm@gnu.org>
* ChangeLog: Update for new release
* ANNOUNCE:
* NEWS:
* Documentation/news.texi: Update of release notes for 0.30.0 by Fred.
* Version: bump to 0.30.0
-defaultLineHeightForFont: and -defaultBaselineOffsetForFont:.
2022-10-11 Riccardo Mottola <rm@gnu.org>
* Source/NSTextView.m
Fix click on TextAttachmentCells, where the left side was not respected.
This was because index was respecting fraction and thus loosing the
attachment when clicking on the right part, only for this case,
recalculate character index without respectFraction.
2022-09-01 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSButtonCell.m: Move method to detect if button is a
radio button to this class (- _isRadio)
* Source/NSButton.m: Add method to check current state of button
clicked and flip other buttons to off (-_handleRadioStates)
2022-08-27 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSButton.m: Fix to address issue #151, NSRadio button
behavior on 10.7 should now be implemented.
2022-08-09 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSPredicateEditorRowTemplate.h:
Add missing constants NSTransformableAttributeType and
NSObjectIDAttributeType.
2022-06-12 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSImageCell.m,
* Source/NSAccessibilityCustomAction.m,
* Source/NSStackView.m,
* Source/NSGridView.m: Fix compiler warnings
2022-03-31 Riccardo Mottola <rm@gnu.org>
* Headers/Additions/GNUstepGUI/GSTheme.h
* Source/GSStandardWindowDecorationView.m
* Source/GSThemeDrawing.m
Refactor resize bar notch width to be a constant and private inside
GSTheme, making it accessible through -[GSTheme resizebarNotchWidth].
2022-03-31 Riccardo Mottola <rm@gnu.org>
* Source/GSStandardWindowDecorationView.m:
Fix resizing mode by fixing initialization order.
2022-03-29 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/Additions/GNUstepGUI/GSXibKeyedUnarchiver.h
* Source/GSXib5KeyedUnarchiver.h
* Source/GSXib5KeyedUnarchiver.m
* Source/GSXibKeyedUnarchiver.m: Change format of
customClass dictionary.
2022-03-26 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/Additions/GNUstepGUI/GSXibKeyedUnarchiver.h: Add
customClasses method and _customClasses ivar.
* Source/GSXib5KeyedUnarchiver.h: Remove _customClasses from
declarations here and the method as well.
* Source/GSXib5KeyedUnarchiver.m: Remove customClasses method
from here.
* Source/GSXibKeyedUnarchiver.m: Implement logic here to build
_customClasses array when loading a XIB of version 3 or 4.
2022-03-22 Riccardo Mottola <rm@gnu.org>
* Source/NSImageCell.m: subclass initImageCell, so that
RefusesFirstResponder can be set, matching Mac.
2022-02-26 Wolfgang Lux <wolfgang.lux@gmail.com>
* Source/NSPopUpButtonCell.m(setMenu:): Select the first item of
the menu instead of the last, as this is the only selection that
makes sense for pull downs.
* Source/NSPopUpButtonCell.m: Never change the state of the
selected item when configured as a pull down to match Apple's
documentation and implementation.
2022-02-06 Wolfgang Lux <wolfgang.lux@gmail.com>
* Source/NSPopUpButtonCell.m: Add fix to avoid a dangling
pointer when changing the menu.
2022-01-11 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSBundleAdditions.m: Use FOR_IN macro instead
of for(... in...) for compiler compatibility.
2021-12-28 Fred Kiefer <FredKiefer@gmx.de>
* Headers/Additions/GNUstepGUI/GSWindowDecorationView.h:
Move new addon methods for Wayland to correct class
GSStandardWindowDecorationView.
* Source/GSWindowDecorationView.m: Keep variables declarations together.
2021-12-26 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSPopUpButtonCell.m: Try to prevent segmenation fault
when deallocating a popup button.
2021-12-26 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSMenu.m: Rename method on NSMenuPanel for the Wayland
backend to -_menu to keep it apart from the already existing method
-menu on NSResponder.
* Source/NSSplitView.m: Correct decoded integer type.
2021-11-15 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSSplitView.m: Correct issue introduced in the previous change
for this class. The code now uses the older, somewhat broken, logic
for version 0 and the newer logic for later versions.
2021-11-18 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSBrowser.m: Check [bc isLoaded] in _remapColumnSubviews
before making the window first responder.
2021-11-15 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSSplitView.h
* Source/NSSplitView.m: Incorporate and refactor changes to NSSplitView
to support Think, Thin, and PaneSplitter NSSplitViewDividerStyle
settings.
2021-11-15 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSView.m: Add cast to id in case nil is not "id". This
is the same fix that was done by Frederick Seiffert on base.
2021-10-27 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSPopUpButtonCell.m
* Source/NSTabView.m
* Source/NSTextContainer.m
* Source/NSTextFieldCell.m
* Source/NSTextField.m
* Source/NSTextView.m
* Source/NSWindowController.m: Remaining improvements and stability
changes contributed by testplant.
2021-10-27 Gregory John Casamento <greg.casamento@gmail.com>
* Source/GSToolbarView.m: Toolbar fixes to prevent the index
from exceeding the number of visibleBackViews.
2021-10-27 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSScrollView.m: Add scrollview keys from TP merge.
2021-10-27 Gregory John Casamento <greg.casamento@gmail.com>
* Source/GSToolTips.m: Add extra pixels so that tool tip doesn't
overrun the window.
2021-10-25 Riccardo Mottola <rm@gnu.org>
* Source/NSTextStorage.m:
Keep local variables to ensure correct values during recursion.
2021-10-21 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSGlyphInfo.[hm]: Class which provides info about
each glyph depending on mappings. Currently only identity mapping
is supported.
2021-10-13 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSToolbar.h: Update to use formal protocol if
API level is 10.6+.
2021-10-13 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSTabView.h: Update NSTabView.h to have a formal
protocol for NSTabViewDelegate if the API we are using is 10.6 or
later.
2021-10-13 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSTableView.m: Remove exception where lastIndex is greater
than number of columns.
2021-10-13 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/Additions/GNUstepGUI/GSTheme.h: Add tabview enum
* Source/GSAutocompleteWindow.h: Fix signature mismatch
* Source/GSThemeDrawing.m: Move tabview enum to header.
2021-10-12 Gregory John Casamento <greg.casamento@gmail.com>
* Source/NSBitmapImageRep.m: Change initWithBitmapDataPlanes:...
to conform to Apple documented behavior and return nil if it
cannot initialize with the given arguments.
2021-10-03 Gregory John Casamento <greg.casamento@gmail.com>
* Headers/AppKit/NSComboBox.h: Add check to see if @optional
is available.