discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSSwitch drawRect bug


From: H. Nikolaus Schaller
Subject: Re: NSSwitch drawRect bug
Date: Mon, 14 Aug 2023 08:36:38 +0200



Am 13.08.2023 um 22:40 schrieb dr_clow@me.com:

Nice! Maybe even just drawSwitchInRect:dirtyRect:forState:enabled: Though, with your way, you could get more information from the control without having to enlarge method arguments every time we wanted to add something else. 

So maybe -(void) drawSwitch:(NSSwitch*)switch inRect:(CGRect)rect dirtyRect:(CGRect)dirtyRect {}

I am not sure if passing the dirtyRect is necessary and useful.
The idea is that -drawRect: is usually called after setting a clipping rect within -display so that drawing with bounds size is correct but will be clipped away.


On Aug 13, 2023, at 1:10 PM, Fred Kiefer <fredkiefer@gmx.de> wrote:

This is a common problem in our drawing code, especially in GSTheme. In the better cases we hand on the view/controller to be drawn along with the requested rectangle. That way the drawing code could still optimise the process, by only drawing components that are actually visible.

I will change the code as suggested by you.

Cheers,
Fred

Am 11.08.2023 um 21:23 schrieb Austin Clow <austin_clow@clowvazar.com>:

In NSSwitch.m, the method for drawRect is as follows:

- (void) drawRect: (NSRect)rect
{
 [[GSTheme theme] drawSwitchInRect: rect
                          forState: _state
                           enabled: [self isEnabled]];
}

I believe it should be

- (void) drawRect: (NSRect)rect
{
 [[GSTheme theme] drawSwitchInRect: [self bounds]
                          forState: _state
                           enabled: [self isEnabled]];
}

As it is right now, when it redrawing a rect, it will redraw it within rect causing it to draw bigger and smaller depending not he redraw area. I'm not comfortable yet doing pull requests for a library I am largely unfamiliar with.

I know the drawing method is kinda ugly right now. I am thinking about rewriting it.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]