Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Results window isn’t visible on second display #1304

Closed
huyz opened this issue Dec 26, 2012 · 8 comments
Closed

Results window isn’t visible on second display #1304

huyz opened this issue Dec 26, 2012 · 8 comments

Comments

@huyz
Copy link

huyz commented Dec 26, 2012

On B70, if I pop up the preferences window and move that onto my second monitor, then popping up Quicksilver will no longer show the results window below (note that I have the setting to show results immediately).

If I restart Quicksilver, then the results window comes back. But as soon as I pop up the preferences window again (which OSX remembers to display on the second monitor), the results window once again stops working until I restart QS.

The only workaround is to just never move the preferences window onto the second monitor.

@skurfer
Copy link
Member

skurfer commented Dec 31, 2012

I can't reproduce this, but I wonder if it only affects some interfaces. Which do you use (under Preferences → Appearance)?

@huyz
Copy link
Author

huyz commented Jan 1, 2013

Strange.

I use "Bezel (built-in)"

@skurfer
Copy link
Member

skurfer commented Jan 2, 2013

I still couldn't reproduce it, but then I figured it out. This only happens if the Quicksilver interface appears on the second monitor and you search for something while it's over there. When testing, I saw it on the "wrong" monitor and focused an app on the main monitor to make QS appear back over there before I tried an actual search.

If I just leave it on the second monitor and search for something, the results list doesn't appear. I think moving the Preferences window over just happens to be the only way to make it appear on the second monitor.

@huyz
Copy link
Author

huyz commented Jan 2, 2013

Great that you were able to reproduce it.

Sorry I wasn't clearer.

@skurfer skurfer mentioned this issue Oct 25, 2013
5 tasks
@skurfer
Copy link
Member

skurfer commented Nov 1, 2013

For the record, a lot more people are running into this under 10.9, since it makes it so easy to invoke Quicksilver on a second display.

@skurfer
Copy link
Member

skurfer commented Nov 1, 2013

I figured out how to fix this in a crappy way for one interface. Hopefully that will be enough information for @pjrobertson or @tiennou to come up with a more correct, more general solution since I’m leaving in a few minutes. 😃

I made these changes in QSBezelInterfaceController.m. See the 4 lines ending with // new.

- (void)showMainWindow:(id)sender {
    [[self window] setFrame:[self rectForState:[self expanded]]  display:YES];
    float x = [self window].frame.origin.x;  // new
    float y = [self window].frame.origin.y;  // new
    QSWindow *rc = (QSWindow *)[dSelector->resultController window];  // new
    [rc setFrameOrigin:NSMakePoint(x + 17, y - 198)];  // new
    if ([[self window] isVisible]) [[self window] pulse:self];
    [super showMainWindow:sender];
//    Does this need to be here?
    [[[self window] contentView] setNeedsDisplay:YES];
}

And now the results list follows the interface over to the other display. I’m not sure if we should do something like that in QSInterfaceController before calling showMainWindow:, or if we can figure out how the main interface knows where to appear and get the results window to do the same automatically.

@pjrobertson
Copy link
Member

I think you’re on the right track… at least you reminded me where the actual code to make the results window appear happens.

Check out - (IBAction)showResultView:(id)sender in QSSearchObjectView.m
I’d suggest putting a breakpoint there and seeing which part is going wrong. That’s probably the code we want to change :)

On 2 Nov 2013, at 03:54, Rob McBroom notifications@github.com wrote:

I figured out how to fix this in a crappy way for one interface. Hopefully that will be enough information for @pjrobertson or @tiennou to come up with a more correct, more general solution since I’m leaving in a few minutes.

I made these changes in QSBezelInterfaceController.m. See the 4 lines ending with // new.

  • (void)showMainWindow:(id)sender {
    [[self window] setFrame:[self rectForState:[self expanded]] display:YES];
    float x = [self window].frame.origin.x; // new
    float y = [self window].frame.origin.y; // new
    QSWindow *rc = (QSWindow *)[dSelector->resultController window]; // new
    [rc setFrameOrigin:NSMakePoint(x + 17, y - 198)]; // new
    if ([[self window] isVisible]) [[self window] pulse:self];
    [super showMainWindow:sender];
    // Does this need to be here?
    [[[self window] contentView] setNeedsDisplay:YES];
    }
    And now the results list follows the interface over to the other display. I’m not sure if we should do something like that in QSInterfaceController before calling showMainWindow:, or if we can figure out how the main interface knows where to appear and get the results window to do the same automatically.


Reply to this email directly or view it on GitHub.

@skurfer skurfer closed this as completed in 15084f6 Nov 5, 2013
skurfer added a commit that referenced this issue Nov 5, 2013
The result controller doesn't get moved over until later in this method.

fixes #1304
@dpiro
Copy link

dpiro commented Nov 6, 2013

THANKS

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants