Ah—I usually use non-continuous single-page as the view setting; I didn’t think 
to try continuous.

Turns out things behave properly in continuous mode.  But:

>  Your patch basically does what you say it's doing wrong in 10.10, namely 
> calling goToPreviousPage and goToNextPage. 


That’s not what I meant to say. I’m saying that in *non*-continuous single-page 
display mode, Skim's apparent externally-observable behavior (i.e., without the 
aid of a debugger) is:

… in 10.9 Mavericks:
  pagedown key ->  goToNextPage  (desired)

.. In 10.10 14A314h:
  pagedown key ->  goToPreviousPage  (undesired)

So, now I can see that my patch does the wrong thing in *continuous* display 
mode... but then, I’m not sure where the problem is.

As for PDFKit, and Preview’s use of it: it might be that  PDFKit currently has 
a bug here, and that Preview uses a workaround for it—though you would think 
PDFKit would be relatively stable by now.  So… I don’t know what’s going on 
there.

However, I’d be happy to do any tests and report the results.


—James

> On 2014-08-17, at 18:58, Christiaan Hofman <[email protected]> wrote:
> 
> I am not sure what the problem is. Your patch basically does what you say 
> it's doing wrong in 10.10, namely calling goToPreviousPage and goToNextPage. 
> I don't know why that is right or wrong? For one thing, it is not what it 
> does no older OS versions. It also depends on your PDF display settings, in 
> particular whether it's continuous or not. Moreover, as I said earlier, I 
> find it very hard to believe that Preview would behave any different from 
> Skim in this regards, because both are based on Apple's PDFKit, and this 
> framework handles these particular events; certainly in Skim, and I cannot 
> imagine Preview would override it, because they would have done that in the 
> framework itself if they thought it would be better. My guess actually is 
> that you're comparing apples to oranges, as in you're using different PDF 
> view settings in Skim and Preview (I know the default settings are different 
> by default.)
> 
> Christiaan
> 
> On Aug 16, 2014, at 19:29, James Widman wrote:
> 
>> Hi all,
>> 
>> Issue: in OS X 10.10 (14A314h),  NSKeyDown events for the pagedown key and 
>> the space bar result in a call to goToPreviousPage, and pageup/shift-space 
>> result in a call to  goToNextPage.
>> 
>> I wrote a patch for this (below) but:
>> 
>> - I’m a newbie with Skim’s source code (and Objective-C in general);
>> - I’m not sure where keyboard bindings are normally supposed to happen; and
>> - I’m not sure whether this is a bug in Yosemite (though Preview.app seems 
>> well behaved).
>> 
>> Criticism welcome!
>> 
>> —James
>> 
>> Index: SKPDFView.m
>> ===================================================================
>> --- SKPDFView.m      (revision 8385)
>> +++ SKPDFView.m      (working copy)
>> @@ -1045,11 +1045,18 @@
>>        }
>>    } else {
>>        // Normal or fullscreen mode
>> -        BOOL isLeftRightArrow = eventChar == NSRightArrowFunctionKey || 
>> eventChar == NSLeftArrowFunctionKey;
>> -        BOOL isUpDownArrow = eventChar == NSUpArrowFunctionKey || eventChar 
>> == NSDownArrowFunctionKey;
>> -        BOOL isArrow = isLeftRightArrow || isUpDownArrow;
>> -        
>> -        if ((eventChar == NSDeleteCharacter || eventChar == 
>> NSDeleteFunctionKey) &&
>> +        BOOL const isLeftRightArrow = eventChar == NSRightArrowFunctionKey 
>> || eventChar == NSLeftArrowFunctionKey;
>> +        BOOL const isUpDownArrow = eventChar == NSUpArrowFunctionKey || 
>> eventChar == NSDownArrowFunctionKey;
>> +        BOOL const isArrow = isLeftRightArrow || isUpDownArrow;
>> +        BOOL const haveShiftKey = !!(modifiers & NSShiftKeyMask);
>> +        BOOL const isPageDown = eventChar == NSPageDownFunctionKey || 
>> eventChar == ' ' && !haveShiftKey;
>> +        BOOL const isPageUp =   eventChar == NSPageUpFunctionKey   || 
>> eventChar == ' ' &&  haveShiftKey;
>> +
>> +        if (isPageDown) {
>> +            [self goToNextPage:self];
>> +        } else if (isPageUp) {
>> +            [self goToPreviousPage:self];
>> +        } else if ((eventChar == NSDeleteCharacter || eventChar == 
>> NSDeleteFunctionKey) &&
>>            (modifiers == 0)) {
>>            [self delete:self];
>>        } else if (([self toolMode] == SKTextToolMode || [self toolMode] == 
>> SKNoteToolMode) && activeAnnotation && editor == nil && 
> 
> 
> ------------------------------------------------------------------------------
> _______________________________________________
> skim-app-develop mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/skim-app-develop


------------------------------------------------------------------------------
_______________________________________________
skim-app-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-develop

Reply via email to