[Adium-devl] [Adium-CVS] 14842 : trunk/Plugins/Contact List/AIBorderlessListWindowController.m trunk/Plugins/Contact List/AIListController.m trunk/Plugins/Contact List/AIListWindowController.m

Nick Peshek kbotc at mac.com
Mon Jan 9 07:36:36 UTC 2006


I can't get the list to go off screen anymore than I could before. I  
suppose the only way to tell is to let more people run it that may  
possibly have this problem. Only bug I've run into is after starting  
and quitting a game, Contact list hiding is broken. (This happened  
some before though too) Maybe I'm not understanding the question too.
On Jan 9, 2006, at 12:04 AM, Evan Schoenberg wrote:
> Does that keep the borderless list on the screen through a resize  
> that would place it off when vertical and horizontal autosizing are  
> both disabled?
>
> -Evan
>
> On Jan 9, 2006, at 12:41 AM, catfish_man at users.sourceforge.net wrote:
>
>> Author: catfish_man
>> Date: 2006-01-09 00:41:51 -0500 (Mon, 09 Jan 2006)
>> New Revision: 14842
>>
>> Modified:
>>    trunk/Plugins/Contact List/AIBorderlessListWindowController.m
>>    trunk/Plugins/Contact List/AIListController.m
>>    trunk/Plugins/Contact List/AIListWindowController.m
>> Log:
>> This should improve the behavior of the contact list during screen  
>> resolution changes. It is not perfect yet; for example it still  
>> disables contact list hiding for unknown reasons
>>
>> Modified: trunk/Plugins/Contact List/ 
>> AIBorderlessListWindowController.m
>> ===================================================================
>> --- trunk/Plugins/Contact List/AIBorderlessListWindowController.m	 
>> 2006-01-09 05:26:58 UTC (rev 14841)
>> +++ trunk/Plugins/Contact List/AIBorderlessListWindowController.m	 
>> 2006-01-09 05:41:51 UTC (rev 14842)
>> @@ -19,22 +19,6 @@
>>
>>  @implementation AIBorderlessListWindowController
>>
>> -//Init
>> -- (id)initWithWindowNibName:(NSString *)inNibName
>> -{	
>> -    if ((self = [super initWithWindowNibName:inNibName])) {
>> -		/* Unlike with a normal window, the system doesn't assist us in  
>> keeping the borderless contact list on a visible screen,
>> -		 * so we'll observe screen changes and ensure that the contact  
>> list stays on a valid screen
>> -		 */
>> -		[[NSNotificationCenter defaultCenter] addObserver:self
>> -												 selector:@selector(centerWindowOnMainScreenIfNeeded:)
>> -													  
>> name:NSApplicationDidChangeScreenParametersNotification
>> -												   object:nil];
>> -	}
>> -
>> -	return self;
>> -}
>> -
>>  //Borderless nib
>>  + (NSString *)nibName
>>  {
>> @@ -52,20 +36,13 @@
>>  	[super dealloc];
>>  }
>>
>> -//If our window is no longer on a screen, move it to the main  
>> screen and center
>> -- (void)centerWindowOnMainScreenIfNeeded:(NSNotification *) 
>> notification
>> -{
>> -	if (![[self window] screen]) {
>> -		[[self window] setFrameOrigin:[[NSScreen mainScreen]  
>> frame].origin];
>> -		[[self window] center];
>> -	}
>> -}
>> -
>> +#warning this seems like it would mess up people with more than  
>> one screen
>>  //Ensure we're on the main screen on load
>>  - (void)windowDidLoad
>>  {
>>  	[super windowDidLoad];
>> -	[self centerWindowOnMainScreenIfNeeded:nil];
>> -}
>> +	NSWindow * window = [self window];
>> +	if (![window screen]) {
>> +		[window constrainFrameRect:[window frame] toScreen:[NSScreen  
>> mainScreen]];}
>>
>>  @end
>>
>> Modified: trunk/Plugins/Contact List/AIListController.m
>> ===================================================================
>> --- trunk/Plugins/Contact List/AIListController.m	2006-01-09  
>> 05:26:58 UTC (rev 14841)
>> +++ trunk/Plugins/Contact List/AIListController.m	2006-01-09  
>> 05:41:51 UTC (rev 14842)
>> @@ -199,13 +199,12 @@
>>  	windowFrame = [theWindow frame];
>>  	newWindowFrame = windowFrame;
>>  	viewFrame = [scrollView_contactList frame];
>> -    if (currentScreen != nil) {
>> -        screenFrame = [currentScreen frame];
>> -        visibleScreenFrame = [currentScreen visibleFrame];
>> -    } else {
>> -        visibleScreenFrame = screenFrame = NSZeroRect;
>> -    }
>>  	
>> +	if(!currentScreen) currentScreen = [NSScreen mainScreen];
>> +	
>> +	screenFrame = [currentScreen frame];
>> +	visibleScreenFrame = [currentScreen visibleFrame];
>> +	
>>  	//Width
>>  	if (useDesiredWidth) {
>>  		if (forcedWindowWidth != -1) {
>> @@ -238,40 +237,34 @@
>>  	}
>>  	
>>  	
>> -    //Compute boundingFrame for window
>> -    if (currentScreen == nil) {
>> -        //No bound
>> -        boundingFrame = NSMakeRect(FLT_MAX*-0.5f, FLT_MAX*-0.5f,  
>> FLT_MAX, FLT_MAX);
>> +    //Compute boundingFrame for window
>> +	/*
>> +	 * If the window is against the left or right edges of the  
>> screen AND the user did not dock to the visibleFrame last,
>> +	 * we use the full screenFrame as our bound.
>> +	 * The edge check is used since most users' docks will not  
>> extend to the edges of the screen.
>> +	 * Alternately, if the user docked to the total frame last, we  
>> can safely use the full screen even if we aren't
>> +	 * on the edge.
>> +	 */
>> +	BOOL windowOnEdge = ((newWindowFrame.origin.x <  
>> screenFrame.origin.x + EDGE_CATCH_X) ||
>> +						 ((newWindowFrame.origin.x + newWindowFrame.size.width) >  
>> (screenFrame.origin.x + screenFrame.size.width - EDGE_CATCH_X)));
>>
>> -    } else {
>> -        /*
>> -         * If the window is against the left or right edges of  
>> the screen AND the user did not dock to the visibleFrame last,
>> -		 * we use the full screenFrame as our bound.
>> -         * The edge check is used since most users' docks will  
>> not extend to the edges of the screen.
>> -         * Alternately, if the user docked to the total frame  
>> last, we can safely use the full screen even if we aren't
>> -		 * on the edge.
>> -         */
>> -        BOOL windowOnEdge = ((newWindowFrame.origin.x <  
>> screenFrame.origin.x + EDGE_CATCH_X) ||
>> -                             ((newWindowFrame.origin.x +  
>> newWindowFrame.size.width) > (screenFrame.origin.x +  
>> screenFrame.size.width - EDGE_CATCH_X)));
>> +	if ((windowOnEdge && (dockToBottomOfScreen !=  
>> AIDockToBottom_VisibleFrame)) ||
>> +	   (dockToBottomOfScreen == AIDockToBottom_TotalFrame)) {
>> +		NSArray *screens;
>>
>> -        if ((windowOnEdge && (dockToBottomOfScreen !=  
>> AIDockToBottom_VisibleFrame)) ||
>> -           (dockToBottomOfScreen == AIDockToBottom_TotalFrame)) {
>> -            NSArray *screens;
>> +		boundingFrame = screenFrame;
>>
>> -            boundingFrame = screenFrame;
>> +		//We still should not violate the menuBar, so account for it  
>> here if we are on the menuBar screen.
>> +		if ((screens = [NSScreen screens]) &&
>> +			([screens count]) &&
>> +			(currentScreen == [screens objectAtIndex:0])) {
>> +			boundingFrame.size.height -= MENU_BAR_HEIGHT;
>> +		}
>>
>> -            //We still should not violate the menuBar, so account  
>> for it here if we are on the menuBar screen.
>> -            if ((screens = [NSScreen screens]) &&
>> -                ([screens count]) &&
>> -                (currentScreen == [screens objectAtIndex:0])) {
>> -                boundingFrame.size.height -= MENU_BAR_HEIGHT;
>> -            }
>> +	} else {
>> +		boundingFrame = visibleScreenFrame;
>> +	}
>>
>> -        } else {
>> -            boundingFrame = visibleScreenFrame;
>> -        }
>> -    }
>> -
>>  	//Height
>>  	if (useDesiredHeight) {
>>  		//Subtract the current size of the view from our frame
>> @@ -286,7 +279,7 @@
>>  			newWindowFrame.size.height = boundingFrame.size.height;
>>  			newWindowFrame.origin.y = boundingFrame.origin.y;
>>  		} else {
>> -			//A Non-full height window is anchrored to the appropriate  
>> screen edge
>> +			//A non-full height window is anchored to the appropriate  
>> screen edge
>>  			if (dockToBottomOfScreen == AIDockToBottom_No) {
>>  				//If the user did not dock to the bottom in any way last, the  
>> origin should move up
>>  				newWindowFrame.origin.y = (windowFrame.origin.y +  
>> windowFrame.size.height) - newWindowFrame.size.height;
>>
>> Modified: trunk/Plugins/Contact List/AIListWindowController.m
>> ===================================================================
>> --- trunk/Plugins/Contact List/AIListWindowController.m	2006-01-09  
>> 05:26:58 UTC (rev 14841)
>> +++ trunk/Plugins/Contact List/AIListWindowController.m	2006-01-09  
>> 05:41:51 UTC (rev 14842)
>> @@ -415,6 +415,7 @@
>>
>>  - (void)screenParametersChanged:(NSNotification *)notification
>>  {
>> +	[self slideWindowOnScreen];
>>  	[contactListController contactListDesiredSizeChanged];
>>  }
>>
>> @@ -515,8 +516,7 @@
>>  - (BOOL)shouldSlideWindowOffScreen
>>  {
>>  	BOOL shouldSlide = NO;
>> -
>> -    if (preventHiding) {
>> +	    if (preventHiding) {
>>          shouldSlide = NO;
>>      }
>>      else if (windowSlidOffScreenEdgeMask != 0) {
>>
>>
>>
>> -------------------------------------------------------
>> This SF.net email is sponsored by: Splunk Inc. Do you grep through  
>> log files
>> for problems?  Stop!  Download the new AJAX search engine that makes
>> searching your log files as easy as surfing the  web.  DOWNLOAD  
>> SPLUNK!
>> http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
>> _______________________________________________
>> Adium-cvs mailing list
>> Adium-cvs at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/adium-cvs
>>
>
> _______________________________________________
> Adium-devl mailing list
> Adium-devl at adiumx.com
> http://adiumx.com/mailman/listinfo/adium-devl_adiumx.com





More information about the devel mailing list