Git Product home page Git Product logo

gnustep / libs-gui Goto Github PK

View Code? Open in Web Editor NEW
268.0 28.0 97.0 21.69 MB

The GNUstep gui library is a library of graphical user interface classes written completely in the Objective-C language; the classes are based upon Apple's Cocoa framework (which came from the OpenStep specification). *** Larger patches require copyright assignment to FSF. please file bugs here. ***

Home Page: http://www.gnustep.org

License: GNU General Public License v3.0

Makefile 0.67% Objective-C 81.78% C 0.28% PostScript 0.01% Shell 0.02% Yacc 0.20% M4 0.37% Roff 16.67%
objective-c gui gnu graphics widgets

libs-gui's Introduction

GNUstep GUI Library

CI

The GNUstep gui library is a library of graphical user interface classes written completely in the Objective-C language; the classes are based upon Apple's Cocoa framwork (which came from the OpenStep specification). These classes include graphical objects such as buttons, text fields, popup lists, browser lists, and windows; there are also many associated classes for handling events, colors, fonts, pasteboards and images.

Initial reading

The file ANNOUNCE contains a very brief overview of the library. It also tells you where to get the most recent version.

The file NEWS has the library's feature history.

The files INSTALL or GNUstep-HOWTO (from the web site) gives instructions for installing the library.

License

The GNUstep libraries and library resources are covered under the GNU Lesser Public License. This means you can use these libraries in any program (even non-free programs). If you distribute the libraries along with your program, you must make the improvements you have made to the libraries freely available. You should read the COPYING.LIB file for more information. All files in the 'Source', 'Headers', directories and subdirectories under this are covered under the LGPL.

GNUstep tools, test programs, and other files are covered under the GNU Public License. This means if you make changes to these programs, you cannot charge a fee, other than distribution fees, for others to use the program. All files in this package EXCEPT files in the 'Tools' directories and subdirectories under this are covered under the LGPL.

How can you help?

Give us feedback! Tell us what you like; tell us what you think could be better.

Please log bug reports on the GitHub issues page.

Happy hacking!

Copyright (C) 2005 Free Software Foundation

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.

libs-gui's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libs-gui's Issues

Controls not loading correctly on G5 (BigEndian 64bit)

Standard Print Panel (Ink)

  • printer list and Layout contain (item1, item2, item3) as coming from gorm
  • Copies and Scale contain "Text" and not correct value
  • Clicking "options" button does not open the options panel but closes print panel

printpanel_g5_bug

GraphicContext isn't ready right after an application did finish launching

I have a simple demo application https://github.com/svgol/colorseeker to demonstrate the issue.
The application shows a color NSBox rounded by 4 sliders controlling RGB and alpha.
When my application did finish launching the method -[showText:] sets the color of NSBox
controlled by values of sliders. It doesn't happen at once. Only several consecutive calls of the method
eventually do that. I temporarily implemented -[windowDidUpdate:] with a counter of calls (in the code the variable _updates).
It takes 8-10 calls on my system to eventually get the NSBox colored. I tried different backends (cairo, art, xlib)
at no avail.

Here are screenshots https://svgol.github.io .

P.S. My system is Linux Ubuntu x64 on Intel i5, Xorg, the current gnustep base-gui-back .

Latest change in base breaks gui

 Compiling file NSFontAssetRequest.m ...
In file included from NSFontAssetRequest.m:25:
In file included from ../Headers/AppKit/NSFontAssetRequest.h:29:
/usr/GNUstep/System/Library/Headers/Foundation/NSProgress.h:121:21: error: type arguments cannot be applied to non-parameterized class 'NSDictionary'
- (GS_GENERIC_CLASS(NSDictionary,NSProgressUserInfoKey,id) *)userInfo;
                    ^
NSFontAssetRequest.m:48:3: warning: pointer/integer type mismatch in conditional expression ('int' and 'void *') [-Wconditional-type-mismatch]
  CALL_BLOCK(completionHandler, error);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/GNUstep/System/Library/Headers/GNUstepBase/GSBlocks.h:110:53: note: expanded from macro 'CALL_BLOCK'
#define CALL_BLOCK(block, args...) ((NULL != block) ? CALL_NON_NULL_BLOCK(block, args) : nil)
                                                    ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   ~~~
1 warning and 1 error generated.
gmake[4]: *** [/usr/GNUstep/System/Library/Makefiles/rules.make:521: obj/libgnustep-gui.obj/NSFontAssetRequest.m.o] Error 1
gmake[3]: *** [/usr/GNUstep/System/Library/Makefiles/Instance/library.make:286: internal-library-all_] Error 2
gmake[2]: *** [/usr/GNUstep/System/Library/Makefiles/Master/rules.make:297: libgnustep-gui.all.library.variables] Error 2

NSRadio button 10.7 behavior is not implemented in GNUstep

The behavior described here is not implemented in GNUtstep.

https://stackoverflow.com/questions/61243478/assign-radio-group-to-radio-buttons

I have created the following test:

https://github.com/gcasa/NSRadio_test

Steps to recreate:

  1. in Xcode on a mac create a new application
  2. Add two radio buttons in the same view
  3. Connect them to the same actions
  4. Build it on gs using buildtool
  5. test

Expected: Radio buttons should behave properly
Actual: Radio buttons do not behave correctly

Feature Request: Tool to compare APIs

It would be great to have a tool that compares the GNUstep API to the one of Cocoa automatically. I do not mean a test suite that tests functionality of each class (nice to have, but very much manual work). I mean a tool that automatically generates a table putting the (method) signatures of each class side by side and highlights differences between class definitions.

Having this would be a great effort in gaining real compatibility I think.

Personally I do not need the full API of SDK 10.15 or something of AppKit. If we could have the set of classes of SDK 10.6/10.7 adopt them to the API of a current SDK and get them stable and working and then maybe even do some cosmestics to make the controls look better, that would be great gain.

NSTouchBar items...

Currently, all of these classes are skeletons. However, when I was working on another app in Xcode, I notice this...

touch_bar

It is theoretically possible for us to implement it as a special window... so I am considering doing this. The reason I left those as empty classes is due to the fact that Apple recommends that you do not expose functionality EXCLUSIVELY in the touchbar since all macs don't have it. There, however, might come a time when all macs are expected to have it so it might be useful to implement this as I have suggested. Any thoughts on your end?

GSXibKeyedUnarchiver out of order reference bug

I've encountered this bug in the GSXib5KeyedUnarchiver while working on porting Transmission Cocoa to GNUstep. It was discovered when GNUstep was incorrectly trying to resolve an IBOutlet with a string as its destination.

Problem:
If a referencing node such as outlet connection appears before the referenced node such as a custom object, the reference will fail to resolve. A concrete example of this would be an outlet element that has a destination id but the referenced node appears later in the file.

This is what appears in the MainMenu.xib file for the Transmission project. On lines 105 and 109, node 206 is referenced as the outlet destination.

image

The node with the id=206 appears much later in the file.

image

Expected behavior:
The Nib file should successfully resolve the referenced nodes regardless of the order that they appear in the file.

Possible solution:
Rather than process referencing elements as they are seen. Record them in an array. Once the entire nib file has finished being parsed then process these elements.

I should be able to address this bug but as I'm unfamiliar with the code base it might take me some time, so feel free to submit a fix.

Gui programs crash

Hi, I'm trying to use GNUstep on FreeBSD 13.0-RELEASE, and running into an issue. The GNUstep ports page, https://www.freshports.org/search.php?query=gnustep&search=go&num=10&stype=name&method=match&deleted=excludedeleted&start=1&casesensitivity=caseinsensitive,
shows that there is no longer a maintainer for this port, so I'm hoping you can help.

I've seen most these errors many times, but never before have seen them cause a crash. When I run "openapp SystemPreferences", it starts rendering a screen, but before I can clearly see it, it goes away.
The console output is listed below, the very last line says 'Uncaught exception NSGenericException, reason: Glyph generation with no font.'

I can run command line utils - for example I downloaded https://salsa.debian.org/gnustep-team/mknfonts, built it with gmake, and used it to build some custom fonts. But I get an error with any gui program - except for CDlayer, I am unable to find any that work, they all get the following errors:

openapp SystemPreferences                     
2022-09-06 21:07:59.229 SystemPreferences[3890:101722] Reparenting resulted in negative border 0, -99, 0, -99
2022-09-06 21:07:59.234 SystemPreferences[3890:101722] Failed to determine offsets for style 2
2022-09-06 21:07:59.386 SystemPreferences[3890:101722] Reparenting resulted in negative border 0, -99, 0, -99
2022-09-06 21:07:59.387 SystemPreferences[3890:101722] Failed to determine offsets for style 11
2022-09-06 21:07:59.410 SystemPreferences[3890:101722] Reparenting resulted in negative border 0, -99, 0, -99
2022-09-06 21:07:59.410 SystemPreferences[3890:101722] Failed to determine offsets for style 12
2022-09-06 21:07:59.422 SystemPreferences[3890:101722] Reparenting resulted in negative border 0, -99, 0, -99
2022-09-06 21:07:59.423 SystemPreferences[3890:101722] Failed to determine offsets for style 13
2022-09-06 21:07:59.435 SystemPreferences[3890:101722] Reparenting resulted in negative border 0, -99, 0, -99
2022-09-06 21:07:59.435 SystemPreferences[3890:101722] Failed to determine offsets for style 14
2022-09-06 21:07:59.503 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.505 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.515 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.516 SystemPreferences[3890:101722] The font specified for NSBoldFont, Helvetica-Bold, can't be found.
2022-09-06 21:07:59.529 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.529 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.529 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.529 SystemPreferences[3890:101722] The font specified for NSBoldFont, Helvetica-Bold, can't be found.
2022-09-06 21:07:59.531 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.532 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.532 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.532 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
Throwing 0x806507798, in flight exception: 0
Exception caught by C++: 0
2022-09-06 21:07:59.533 SystemPreferences[3890:101722] GSHorizontalTypesetter - Glyph generation with no font.
Throwing 0x806507798, in flight exception: 0x806507798
Exception caught by C++: 0
Throwing 0x806507798, in flight exception: 0x806507798
Exception caught by C++: 0
2022-09-06 21:07:59.533 SystemPreferences[3890:101722] Problem posting notification: <NSException: 0x806507798> NAME:NSGenericException REASON:Glyph generation with no font. INFO:(null)
2022-09-06 21:07:59.533 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.533 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.533 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.533 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.533 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.533 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
Throwing 0x806507e58, in flight exception: 0x806507798
Exception caught by C++: 0
2022-09-06 21:07:59.533 SystemPreferences[3890:101722] GSHorizontalTypesetter - Glyph generation with no font.
Throwing 0x806507e58, in flight exception: 0x806507e58
Exception caught by C++: 0
Throwing 0x806507e58, in flight exception: 0x806507e58
Exception caught by C++: 0
2022-09-06 21:07:59.534 SystemPreferences[3890:101722] Problem posting notification: <NSException: 0x806507e58> NAME:NSGenericException REASON:Glyph generation with no font. INFO:(null)
2022-09-06 21:07:59.534 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.534 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.538 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.538 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.538 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.538 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.538 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.538 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.538 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.538 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] The font specified for NSBoldFont, Helvetica-Bold, can't be found.
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
Throwing 0x806cef378, in flight exception: 0x806507e58
Exception caught by C++: 0
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] GSHorizontalTypesetter - Glyph generation with no font.
Throwing 0x806cef378, in flight exception: 0x806cef378
Exception caught by C++: 0
Throwing 0x806cef378, in flight exception: 0x806cef378
Exception caught by C++: 0
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] Problem posting notification: <NSException: 0x806cef378> NAME:NSGenericException REASON:Glyph generation with no font. INFO:(null)
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.539 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.540 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] The font specified for NSBoldFont, Helvetica-Bold, can't be found.
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
Throwing 0x806e26ed8, in flight exception: 0x806cef378
Exception caught by C++: 0
2022-09-06 21:07:59.541 SystemPreferences[3890:101722] GSHorizontalTypesetter - Glyph generation with no font.
Throwing 0x806e26ed8, in flight exception: 0x806e26ed8
Exception caught by C++: 0
Throwing 0x806e26ed8, in flight exception: 0x806e26ed8
Exception caught by C++: 0
2022-09-06 21:07:59.542 SystemPreferences[3890:101722] Problem posting notification: <NSException: 0x806e26ed8> NAME:NSGenericException REASON:Glyph generation with no font. INFO:(null)
2022-09-06 21:07:59.542 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.542 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.542 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.542 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.542 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.542 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.542 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.542 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.542 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.543 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.543 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.543 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.543 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.543 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.543 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.543 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.543 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.543 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.543 SystemPreferences[3890:101722] The font specified for NSBoldFont, Helvetica-Bold, can't be found.
2022-09-06 21:07:59.544 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.544 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.544 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.544 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.544 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
Throwing 0x806e287c8, in flight exception: 0x806e26ed8
Exception caught by C++: 0
2022-09-06 21:07:59.544 SystemPreferences[3890:101722] GSHorizontalTypesetter - Glyph generation with no font.
Throwing 0x806e287c8, in flight exception: 0x806e287c8
Exception caught by C++: 0
Throwing 0x806e287c8, in flight exception: 0x806e287c8
Exception caught by C++: 0
2022-09-06 21:07:59.544 SystemPreferences[3890:101722] Problem posting notification: <NSException: 0x806e287c8> NAME:NSGenericException REASON:Glyph generation with no font. INFO:(null)
2022-09-06 21:07:59.544 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.544 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.544 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.545 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.545 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.545 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.545 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.545 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.545 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.546 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.546 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.546 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.546 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.546 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.546 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.546 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.546 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.547 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.548 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.548 SystemPreferences[3890:101722] The font specified for NSBoldFont, Helvetica-Bold, can't be found.
2022-09-06 21:07:59.548 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.548 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.550 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.550 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.550 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.550 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
Throwing 0x806e6da08, in flight exception: 0x806e287c8
Exception caught by C++: 0
2022-09-06 21:07:59.550 SystemPreferences[3890:101722] GSHorizontalTypesetter - Glyph generation with no font.
Throwing 0x806e6da08, in flight exception: 0x806e6da08
Exception caught by C++: 0
Throwing 0x806e6da08, in flight exception: 0x806e6da08
Exception caught by C++: 0
2022-09-06 21:07:59.550 SystemPreferences[3890:101722] Problem posting notification: <NSException: 0x806e6da08> NAME:NSGenericException REASON:Glyph generation with no font. INFO:(null)
2022-09-06 21:07:59.550 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.550 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.550 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.551 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.551 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
Throwing 0x806e6dfa8, in flight exception: 0x806e6da08
Exception caught by C++: 0
2022-09-06 21:07:59.551 SystemPreferences[3890:101722] GSHorizontalTypesetter - Glyph generation with no font.
Throwing 0x806e6dfa8, in flight exception: 0x806e6dfa8
Exception caught by C++: 0
Throwing 0x806e6dfa8, in flight exception: 0x806e6dfa8
Exception caught by C++: 0
2022-09-06 21:07:59.551 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.552 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.552 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.552 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.553 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.553 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.553 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.553 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.553 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
2022-09-06 21:07:59.553 SystemPreferences[3890:101722] The font specified for NSFont, Helvetica, can't be found.
Throwing 0x806e72298, in flight exception: 0x806e6dfa8
Exception caught by C++: 0
2022-09-06 21:07:59.553 SystemPreferences[3890:101722] GSHorizontalTypesetter - Glyph generation with no font.
Throwing 0x806e72298, in flight exception: 0x806e72298
Exception caught by C++: 0
Throwing 0x806e72298, in flight exception: 0x806e72298
Exception caught by C++: 0
/usr/local/GNUstep/System/Applications/SystemPreferences.app/SystemPreferences: Uncaught exception NSGenericException, reason: Glyph generation with no font.

Tar error while doing make install on Alpine linux

While doing sudo -E make install for libs-gui, installation halts with the following error:

Making install for bundle libgmodel...
 Installing headers...
 Installing bundle directory...
tar: f: No such file or directory
tar: short read
make[2]: *** [/usr/GNUstep/System/Library/Makefiles/Instance/Shared/bundle.make:412: shared-instance-bundle-install] Error 1
make[1]: *** [/usr/GNUstep/System/Library/Makefiles/Master/rules.make:297: libgmodel.install.bundle.variables] Error 2
make: *** [/usr/GNUstep/System/Library/Makefiles/Master/serial-subdirectories.make:53: internal-install] Error 2

Does anyone know how to address it?

(libs-base built and installed fine.)

ISO 630 and 693-2 .lproj directories in bundle (en, fr, ...)

Currently GNUstep uses the full name of the language for the .lproj directory. In addition to this we should also support the 2 or 3 letter language codes described in ISO 630 and ISO 639-2. This is the same thing Apple now uses. I am saying we should support both. :)

NSView is missing a dummy implementation of awakeFromNib

On Cocoa/MacOS there is apparently a dummy implementation of awakeFromNib. When we load a custom view that calls [super awakeFromNib] in GS we get...

** Build Succeeded
[heron@mother NSView_subclass_awakeFromNib_test] % ./build/NSView_subclass_awakeFromNib_test/Products/NSView_subclass_awakeFromNib_test.app/NSView_subclass_awakeFromNib_test
2023-08-31 15:41:41.401 NSView_subclass_awakeFromNib_test[222229:222229] Exception occurred while loading model: MyView(instance) does not recognize awakeFromNib
2023-08-31 15:41:41.402 NSView_subclass_awakeFromNib_test[222229:222229] Failed to load Xib
2023-08-31 15:41:41.402 NSView_subclass_awakeFromNib_test[222229:222229] Cannot load the main model file 'MainMenu'

On macOS this DOES NOT HAPPEN. I am going to add an awakeFromNib method in NSView that does nothing.

Missing functionality: Life cycle methods in NSViewController are not called...

Currently, the invocation of the methods documented here is missing. To be fully compliant with macOS 10.10 these must be called at the appropriate times during the execution of the application.

Acceptance Criteria: The methods viewDidLoad, viewWillAppear, viewDidAppear, updateViewConstraints, viewWillLayout, viewDidLayout, viewWillDisappear, viewDidDisappear should be called during the life cycle of the view.

NSTextView scrolling broken

I am getting the following exception when scrolling past the end of a text view by adding more text... Please see NSTextView_test in my repositories. Run it and simply keep typing until you get past the end of the document. You will see this:

2020-09-11 13:52:39.277 NSTextView_test[28302:28302] run_for_character_index failed for 144
Throwing 0x47f9768, in flight exception: 0x48ec898
Exception caught by C++: 0
2020-09-11 13:52:39.285 NSTextView_test[28302:28302] run_for_character_index failed for 145
Throwing 0x47f9768, in flight exception: 0x47f9768
Exception caught by C++: 0
2020-09-11 13:52:39.303 NSTextView_test[28302:28302] run_for_character_index failed for 146
Throwing 0x47f9768, in flight exception: 0x47f9768
Exception caught by C++: 0

bug: [NSApp setApplicationIconImage:] doesn't set the image

Environment: freebsd 13, windowmaker, gnustep-gui from git master, clang 11.0.1

Repro project available. This project draws a red square into its dock icon in two ways:

  1. if you launch with no args, it calls [NSApp setApplicationIconImage:dockImage]. This doesn't do anything, and the app's dock tile remains empty.
  2. if you launch as IconDrawing.app/IconDrawing -UseIconWindow YES, it sets the image in an NSImageView, and adds that as a subview to [[NSApp iconWindow] contentView]. This does work correctly, and draws the red square in the dock icon.

I believe that the first method would be expected by Cocoa developers as it's documented as supported (so is NSDockTile, which GNUstep doesn't yet have).

NSPanels are not movable under Windows

Same setup as #77. NSPanels do not show properly under Windows, they should be more like NSWindows.

See attached:

NSAlert

Also, as you can see, the NSAlert should have an error in it and a button, but it doesn't.

--enable-imagemagick no longer works

ImageMagick's BlobToImage can't seem to decode whatever blob it is receiving.

In order to compile with --enable-imagemagick, you also need to apply the following diff:

index fa98add60..f54898cc3 100644
--- a/Source/GSImageMagickImageRep.m
+++ b/Source/GSImageMagickImageRep.m
@@ -82,11 +82,11 @@
       NSSize res;
       if (image->units == PixelsPerCentimeterResolution)
 	{
-	  res = NSMakeSize(image->x_resolution * 2.54, image->y_resolution * 2.54);
+	  res = NSMakeSize(image->resolution.x * 2.54, image->resolution.y * 2.54);
 	}
       else
 	{
-	  res = NSMakeSize(image->x_resolution, image->y_resolution);
+	  res = NSMakeSize(image->resolution.x, image->resolution.y);
 	}
 
       if (res.width > 0 && res.height > 0)
@@ -121,7 +121,7 @@
   
   // Set the background color to transparent
   // (otherwise SVG's are rendered against a white background by default)
-  QueryColorDatabase("none", &imageinfo->background_color, exception);
+  QueryColorCompliance("none", AllCompliance, &imageinfo->background_color, exception);
 
   images = BlobToImage(imageinfo, [data bytes], [data length], exception);
 

The backend is important, as the internally supported formats alone are severely limiting.

-- Marco

Autoenable message sent to dellocated menu item

Comment with more details @gcasa .
Debugging GNUMail crash, I have a stacktrace where autoenabel is asked for an item while the whole popupbutton is being deallocated.

Setting
[sendSupportedMechanismsPopUp setAutoenablesItems:NO];
"cures" the issue but Gregory agrees it is more a workaround.

A question is also, should the default be YES or NO for autoenable? Gorm creates PopUpButtons with YES but apparently Mac no (@gcasa please integrate/correct with the results of your test)

Full stacktrace when putting a zombie breakpoint:

#0  GSLogZombie (sel=0xb7c21cd0 <_OBJC_SELECTOR_TABLE+2032>, o=0xb8ba28) at NSObject.m:181
#1  -[NSZombie forwardInvocation:] (self=0xb8ba28, _cmd=0xb7742610 <_OBJC_SELECTOR_TABLE+176>,
    anInvocation=0xecd0a8) at NSObject.m:2523
#2  0xb74253e3 in GSFFIInvocationCallback (cif=0xec8b70, retp=0xbfffe990, args=0xbfffe920, user=0xeb3d58)
    at GSFFIInvocation.m:606
#3  0xb4c03b45 in ?? () from /usr/lib/i386-linux-gnu/libffi.so.6
#4  0xb4c03ef6 in ?? () from /usr/lib/i386-linux-gnu/libffi.so.6
#5  0xb784f78e in -[NSApplication targetForAction:to:from:] (self=0x53a880,
    _cmd=0xb7c88e08 <_OBJC_SELECTOR_TABLE+1192>, theAction=0xb3aed118 <_OBJC_SELECTOR_TABLE+1304>,
    theTarget=0xb8ba28, sender=0xc01e20) at NSApplication.m:2294
#6  0xb790a075 in -[NSMenu _autoenableItem:] (self=0xc0fb70,
    _cmd=0xb7c88e68 <_OBJC_SELECTOR_TABLE+1288>, item=0xc01e20) at NSMenu.m:1177
#7  0xb790ef71 in -[NSMenu update] (self=<optimized out>, _cmd=<optimized out>) at NSMenu.m:1255
#8  0xb7932b82 in -[NSPopUpButtonCell setMenu:] (self=0xc0faa8,
    _cmd=0xb7ca18f0 <_OBJC_SELECTOR_TABLE+112>, menu=0x0) at NSPopUpButtonCell.m:173
#9  0xb7934dda in -[NSPopUpButtonCell dealloc] (self=0xc0faa8, _cmd=0xb76f4f58 <_OBJC_SELECTOR_TABLE+24>)
    at NSPopUpButtonCell.m:152
#10 0xb78a834f in -[NSControl dealloc] (self=0xc0f9d8, _cmd=0xb76f4f58 <_OBJC_SELECTOR_TABLE+24>)
    at NSControl.m:125
#11 0xb79b94c7 in -[NSView removeSubview:] (self=0xc38310, _cmd=0xb7cf0038 <_OBJC_SELECTOR_TABLE+1528>,
    aView=0xc0f9d8) at NSView.m:965
#12 0xb79b92c5 in -[NSView removeFromSuperviewWithoutNeedingDisplay] (self=0xc0f9d8,
    _cmd=0xb7ceffa0 <_OBJC_SELECTOR_TABLE+1376>) at NSView.m:908
#13 0xb79c7972 in -[NSView dealloc] (self=0xc38310, _cmd=0xb3af1898 <_OBJC_SELECTOR_TABLE+824>)
    at NSView.m:745
#14 0xb3acf38a in -[SendSMTPView dealloc] (self=0xc38310, _cmd=0xb76f4f58 <_OBJC_SELECTOR_TABLE+24>)
    at SendView.m:146
#15 0xb79b94c7 in -[NSView removeSubview:] (self=0xc32078, _cmd=0xb7cf0038 <_OBJC_SELECTOR_TABLE+1528>,
    aView=0xc38310) at NSView.m:965
#16 0xb79b92c5 in -[NSView removeFromSuperviewWithoutNeedingDisplay] (self=0xc38310,
    _cmd=0xb7ceffa0 <_OBJC_SELECTOR_TABLE+1376>) at NSView.m:908

NSWindow implements NSCoding - it shouldn't.

The issue here is this. Currently GS' implementation of NSWindow and NSPanel implement NSCoding and they shouldn't. This class is decoding in nib and xib files using NSWindowTemplate (a proxy) and NSClassSwapper. This makes it possible to implement a few features in Cocoa (and OPENSTEP) that GS currently doesn't support:

  • Deferred windows/panels - this is not very important now as this was done to save memory on older systems.
  • Allow IB/Gorm to switch subclasses easily so that an NSPanel or NSWindow could be changed to the other without any issues

It will be necessary to remove this implementation (or at least to deprecate it's use in Gorm and in .gorm files) to fix this issue. Currently this isn't super high priority as there are acceptable work-arounds for the NSPanel<->NSWindow issue and the deferred functionality isn't critical as memory is no longer a sparse resource.

Please see...this bug on savannah regarding the issue. GC

XIB tooltip format has changed in latest Xcode...

The original format is this... note that the toolTip is set in the first line...

                            <button toolTip="Enable rich cursors when connected to a compliant VNC server." fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="688">
                                <rect key="frame" x="29" y="32" width="322" height="18"/>
                                <autoresizingMask key="autoresizingMask"/>
                                <buttonCell key="cell" type="check" title="Rich Cursors" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="776">
                                    <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
                                    <font key="font" metaFont="system"/>
                                </buttonCell>
                                <connections>
                                    <action selector="changeEncodingPrefs:" target="-2" id="695"/>
                                    <outlet property="nextKeyView" destination="hcb-wR-6iE" id="aIg-47-phy"/>
                                </connections>
                            </button>

The new format is this... note that the toolTip is set as a key as a subitem in the button...

                            <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZPu-m5-rg9">
                                <rect key="frame" x="29" y="107" width="322" height="18"/>
                                <autoresizingMask key="autoresizingMask"/>
                                <string key="toolTip">Establish all RDP connections using the updated RDP communication channel.</string>
                                <buttonCell key="cell" type="check" title="Use New RDP Connection (Beta)" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="0c7-zn-Q5c">
                                    <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
                                    <font key="font" metaFont="system"/>
                                </buttonCell>
                                <connections>
                                    <action selector="enableEpgwRdpCheckbox:" target="-2" id="448-N6-I3S"/>
                                </connections>
                            </button>

The result of this is that the toolTips set in Xcode are not displayed when loaded in a GS application. This was initially reported internally by @DavidHVernon. In the future please report GS bugs here.

userSpaceScaleFactor issues with [NSWindow setFrame] and [[NSScreen mainScreen] frame] et cetera

userSpaceScaleFactor and all of the code that has gone into supporting this value has caused a lot of inconsistencies through out the GNUStep frameworks and defaults apps. I suspect this is because most (it not all?) are using a scaleFactor of 1, where non of these issues occur.

I am going to use the word 'points' here to distinguish from exact 'pixels'. On macOS they refer to these as 'virtual' pixels. Where a virtual pixel (e.g. a point) may be made up of several pixels (thus a scale factor).

Problem:
[NSWindow setFrame:] & [[NSScreen mainScreen] frame] are all reported in traditional true pixels. This has created a hidden problem for developers who are not using HighDPI displays and a userSpaceScaleFactor other than 1. This problem does not occur with NSView which handles points (virtual pixels) rather than true pixels.

Examples
One such problem occurs when the size of a NSWindow is stored as a string. If the string is stored when the user has userSpaceScaleFactor set to 1, it may store an NSRect that has the following positions and size {x: 100, y: 100, width: 100, height: 100}, but if the user closes that window, then changes the scale factor to 2 and reopens the window, that user string will now create a window that is exactly 100 pixels high (instead of 200), but with content that is drawn at twice the size. You can actually see this when you open the Inspector in GWorksapce when the scale factor is set to 2. The pixel size of the window is technically correct (as it is pixel perfect), but the internal size of the contents are doubled (which ice correct) but in a window frame that is half the size it should be for the content.

Another occurrence of this problem happens when you want to use [[NSScreen mainScreen] frame], like in the GWorkspace DesktopView and Dock. When the scale factor is other than 1, it uses [[NSScreen mainScreen] frame] to do all of its layout math; however, because [[NSScreen mainScreen] frame] returns pixels and not points and the internal drawing of the window is using points, you end up having a dock that won't appear on screen, and desktop icons that are far off screen to the right at double the distance.

Workaround:
You can fix all of these by remembering to resize the NSRect by the scalefactor that is sent to or retrieved from these methods; however, instead, [NSWindow setFrame:], [NSWindow frame], and [NSScreen frame] should simply return the correct size in points instead of pixels. That way, no conversion has to be used each time you do this.

Currently, you do not have to do this for NSView because NSViews already take the scale into account.

*Proposed Fix
[[NSScreen mainScreen] frame] should return the frame in points. [NSWindow setFrame:] should also assume points instead of pixels.

Create a function [[NSScreen mainScreen] unscaledFrame] to get pixels, and [NSWindow setUnscaledFrame:] && [NSWindow unscaledFrame] respectively.

Because this change would affect any apps or API using [[NSScreen mainScreen] frame] or [NSWindow setFrame:], we need to audit all code that goes in and out of these functions to ensure that they assume the right scale, but once this is fixed, API users will no longer have to think about what the exact pixel sizes should be, instead the NSWindow will assume virtual pixels or points and do the right thing.

I feel that this point that not many people are using a scaleFactor other than 1 or these issues would have been fixed by now, so I imagine that the impact is astronomically low.

Text rendering issue when GSScaleFactor is not 1 or 2

I've attached a screenshot of TextEdit which demonstrates the issue, but it can be seen across all apps where there is significant amounts of text. I'm testing with GSScaleFactor 1.5 myself, but it also occurs with other fractional values, 3, 4. Oddly it doesn't seem to occur when set to 2.

I've dug into it a little bit, and found that setting GBUF_SIZE in NSLayoutManager.m:1606 to 1 actually 'fixes' the display issues, but I guess at a performance penalty? The error in placement appears to occur at the character that this is set to, so in my screenshot it's the current 16 - which causes every 16th set of characters to be misplaced slightly.
text_scaling

Putting the issue up here as the text layout stuff appears quite complicated, so maybe someone with experience here might have an idea as to what the issue is, but I'll continue to look into it myself.

block macro fails to compile

using clang 10:

Compiling file NSFontAssetRequest.m ...
NSFontAssetRequest.m:48:3: error: incompatible operand types ('int' and 'id')
CALL_BLOCK(completionHandler, error);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Headers/GNUstepBase/GSBlocks.h:110:53: note: expanded from macro
'CALL_BLOCK'
...args...) ((NULL != block) ? CALL_NON_NULL_BLOCK(block, args) : nil)
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~
1 error generated.

NSStoryboard additional work...

  1. A couple of observations so that you know I am actively thinking of code quality and structure: NSStoryboardSegue might need to be broken up into subclasses differentiating on the "perform" function based on the variable "kind" (i.e. show, modal, etc would have a different subclass with the current implementation for each in it). The pattern here is pretty obviously pointing towards that kind of thing. Also, I intend to look further into the idea of making the segue just a connection, though I do see some roadblocks there.
  2. Note the "showSeguePresentationStyle" entry. I need to take this into account. Since this branch is specific to getting these controllers implemented I will also do this in a separate PR right after this one. This property, apparently, controls whether or not the controller can be shown multiple times or just once. I am going to start that branch now. It will be NSStoryboard_updates.

NSPopover improvements

NSPopover implementation needs to be properly finished. It doesn't have the correct border and does not currently center itself correctly.

  1. Create a program with a popover either in Xcode or in GNUstep
  2. Display the popover

EXPECTED: the popover should show up on the appropriate edge with the correct behavior and "pointer"
ACTUAL: it currently doesn't do that. It shows up borderless.

Refactor storyboard code once merged.

The storyboard code is working and tested, but I need to move some of the functionality to a different class. This issue is a reminder to do so once it is merged into master.

Getting "title" for NSTextField when loading XIB on Windows.

scsi2sd_windows

My environment is MSYS2 on Windows 10. I set it up using Riccardo's instructions here:

http://wiki.gnustep.org/index.php/Installation_MSYS2

I am using GCC10 and the Cairo backend. The win32 backend dies. This is apparently happening because setFont: is called after the contents are sent in NSCell, but I can't determine why... this is happening in -[NSCell initWithCoder:]

SCSI2SD is located at:

https://github.com/gcasa/SCSI2SD-V6-Cocoa
on the branch windows_changes.

This also happens with NSStoryboard_test and other XIB based tests.

Procedure to reproduce:

  1. install GNUstep on windows using the instructions above
  2. download and build one of the tests specified above
  3. run
  4. you will see something like the above for NSTextFields.

expected: It should show the correct strings.

NSTabView not supported in XIB decoding.

The tabview items are not decoding when the XIB is unarchived. Thus we end up with an ugly empty tabview.

Steps to recreate:

  1. Create a XIB with an NSTabView in XCode and give it multiple tabs with varying contents.
  2. Bring the project onto a GNUstep machine
  3. build the project with libs-xcode and buildtool.
  4. run the project

Expected: The tab vies should show up.
Actual: only the box of the tabview is drawn. No items and no tabs are shown

GC

NSImage and caching of custom image representations

As discovered in #185, NSImage with a NSCustomImageRep caches it apparently unconditionally, rendering impossible its usage.
Maybe it needs a way to invalidate it or custom image reps should be totally excluded by caching.

NSImageView acceptsFirstResponder while it should not

I found out that a custom NSImageView inside a scrollview "eats" copy&paste events because it accepts the first responder instead of the window/document containing it. On Mac instead it works.
A first way to proof that is on GNUstep to override in the custom view acceptsFirstResponder and return NO.

Further analysis shows that this comes actually from the NSControl getting the responder property from the cell.
So, the workaround can be reduced to [[self selectedCell] setRefusesFirstResponder:YES];

Now I think that either the initialization of NSCell is itself wrong or GORM is instantiating it wrong (where wrong means different from Mac).

NSPopUpButton has an extra, black, menu item on top

popupbug

Steps to reproduce:

  1. Open an app that uses NSPopUpButton
  2. Click on the popup button

Result: See the attached image. There is a black menu item
Expected: The popup should appear, but not with the blank, black menu item.

Binding are not working on NSTableView.

Currently I have two examples in my repository NSArrayController_test and NSDictionaryController_test. I am currently working on implementing NSDictionaryController, so I will cover NSArrayController here.

  1. build the NSArrayController_test example
  2. run

Expected: you should get a table with one column with three rows being 1,2, & 3.
Actual: You get nothing.

Currently, the bindings are not causing the NSTableView to show the results as it is under macOS:
NSArrayController

GSScaleFactor setting and titlebar window decorations

I've noticed that the titlebar height is defined as a constant in GSThemeDrawing.m. This results in the titlebar buttons being clipped when scaling is set to, for example, 1.5. It would be possible to modify [GSTheme titlebarHeight] to return the scaled height, either calculated every time, or stored as a instance variable which is set up on init. Would one of these solutions be acceptable?
Cheers.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.