Commit Graph

78 Commits

Author SHA1 Message Date
Allan Odgaard
9e3b1d6028 Set wantsLayer to YES for all NSVisualEffectView subclasses
This is required when using NSVisualEffectBlendingModeWithinWindow although on macOS 10.13 and later a view is layer backed by default.
2018-12-04 15:43:15 +07:00
Allan Odgaard
42cdb1c430 Add URL escaping for the path component of SCM URLs 2018-11-22 16:24:17 +07:00
Allan Odgaard
60a3690bef Use NSPasteboard’s writeObjects: when copying items from file browser 2018-11-21 16:24:51 +07:00
Allan Odgaard
892fc536f8 Move outlineView:writeItems:toPasteboard: to view controller 2018-11-21 16:24:51 +07:00
Allan Odgaard
aad3fdaca8 Implement outlineView:pasteboardWriterForItem: for file browser dragging
This is the “modern” API that supports multiple items on the clipboard and gives us a badge to show how many items are being dragged.

Though the default drag image does not resemble Finder nor does it seem to support flocking out of the box (where multiple items are collapsed into a single proxy image).
2018-11-21 16:24:51 +07:00
Allan Odgaard
19f15f97fc Use NSPasteboard’s writeObjects: for file browser’s service menu support 2018-11-21 16:24:51 +07:00
Allan Odgaard
942b962ce5 The gear shown for action pop-up buttons was clipped on 10.14
We wrap the button in view to clip some of the excessive left margin but on 10.14 the dimensions changed so we would also clip some of the gear.
2018-11-20 22:21:50 +07:00
Allan Odgaard
89404715f3 Tweak layout of action buttons in file browser
Avoid setting explicit size of the image buttons and do not stretch the buttons to full height, except for reload, as that image seems to use a different size as our other buttons, and therefor doesn’t align properly.
2018-11-15 16:42:55 +07:00
Allan Odgaard
930619d6e7 Make NSVisualEffectView the superview of our status bars
The result is the same though with the NSVisualEffectView being a superview, a subview can query the interiorBackgroundStyle to affect rendering.
2018-11-15 12:58:06 +07:00
Allan Odgaard
7f794f618d Remove drawRect: overload as we no longer change contentBorderThickness 2018-11-15 12:58:06 +07:00
Allan Odgaard
414e516ea9 Do not use NSBackgroundStyleRaised for views in file browser header
It does not appear to have any effect and is probably (semantically) wrong now that buttons are placed on “header” material (on 10.14).
2018-11-15 11:31:14 +07:00
Allan Odgaard
77280a8ebf Since we center views in file browser header there is no need to stretch
Previously we stretched the views to full height (minus bottom divider) and relied on the views to then center their content, but the back/forward images were not properly aligned (at least on 10.14).
2018-11-15 11:31:14 +07:00
Allan Odgaard
21d003ebc8 File browser view was only observing changes to user defaults on 10.14 2018-11-15 11:31:14 +07:00
Allan Odgaard
c235a61eca Do not enable blending of file browser header until 10.14 2018-11-15 11:31:14 +07:00
Ronald Wampler
444c17f7bf Check the correct return value (-1) when item is not found 2018-11-14 09:23:27 +07:00
Allan Odgaard
b1ae800fdc Show an alert if version control information is unavailable 2018-11-12 19:58:48 +07:00
Allan Odgaard
d27c779c60 Use window color behind file browser (instead of blur)
At least on 10.14 the window color is neither black (in dark mode) nor white (in light mode) and thus works well to give some contrast to the main text view.
2018-11-12 19:30:05 +07:00
Allan Odgaard
c725d60b6c Delay centering selected file browser row till next event loop cycle
Without this, it would sometimes fail when the outline view had to reload and expand items, presumably because updating the frame of the outline view (after reloading/expanding items) is not “instant”.
2018-11-12 19:19:01 +07:00
Allan Odgaard
58aaf36225 Provide a default include glob for file browser
This is not relevant for TextMate, but when the file browser is used in other contexts, it would previously show hidden files, as there was no default include pattern to limit files to only those matching `*`.
2018-11-12 19:16:14 +07:00
Allan Odgaard
663a9a638a Do not blend file browser content with header on 10.11 and earlier
Also disable the blurred background as it is mainly for dark mode, which was introduced in 10.14.
2018-11-06 19:26:08 +07:00
Allan Odgaard
5f63ee096b Remove ability to have file browser header in the tab bar
This style is not easily compatible with moving the tab bar view to the window title.
2018-11-05 19:16:24 +07:00
Allan Odgaard
f242bd67e5 Use NSIsEmptyRect instead of comparing size to NSZeroSize 2018-11-05 19:16:24 +07:00
Allan Odgaard
477d906399 Change accessibility label of folder pop-up button to “Current folder”
The system file dialog has this labelled as “where” but I think “current folder” is more appropriate.
2018-11-05 19:16:24 +07:00
Allan Odgaard
892a6072ae Move OakTabBarStyle to own header
This allows us to make OakTabItemView.h a private header.
2018-11-03 11:17:08 +07:00
Allan Odgaard
4c339ada62 Let file browser scroll view extend behind its header 2018-11-02 10:49:56 +07:00
Allan Odgaard
14ae6019bf Update all instances of accessibilitySetOverrideValue:forAttribute: 2018-11-02 08:40:39 +07:00
Allan Odgaard
80681fc6a4 Add NSVisualEffectView behind file browser when running on 10.11 2018-11-01 14:43:41 +07:00
Allan Odgaard
96d1220e63 Use self.window instead of accessing instance variable of superclass 2018-10-31 23:07:52 +07:00
Allan Odgaard
fa5e3cf869 Remove custom NSCell subclass used for file browser’s folder pop-up
The purpose was to render text with a shadow and fade the text when the window is inactive, but the former has not been used since 10.10 and the latter doesn’t actually seem to work.
2018-10-30 21:22:13 +07:00
Allan Odgaard
c21387adfb Selecting file outside project (⌃⌘R) would fail 2018-10-30 18:52:30 +07:00
Allan Odgaard
9b70e273d5 Make new file browser’s CreateIconImageForURL public API
Ideally I would like to have the FileItem class be the public API, as that will then take care of updating the icon’s SCM status etc., current commit is just a temporary fix for missing document icons on 10.14.
2018-10-30 16:10:51 +07:00
Allan Odgaard
fd0ef648e1 Show as many parents as required to disambiguate file browser items 2018-10-30 13:45:38 +07:00
Allan Odgaard
e6ae59976b Remove most of our 10.10 compatibility checks 2018-10-30 12:31:51 +07:00
Allan Odgaard
aa674c08b7 Guard against no file browser root item when updating modified/open URLs 2018-10-30 11:53:35 +07:00
Allan Odgaard
bad84bd511 Tweak how we throttle fetching SCM status
When we observe a change on disk we will fetch status after 0.5 seconds if we are active, otherwise 3 seconds.

If we become active and have a pending update, we update immediately.

The reason for the delay is that the change on disk could be the version control system working, for example performing a rebase, and not all systems can gracefully handle requesting status when in the midst of such operation.
2018-10-29 21:31:56 +07:00
Allan Odgaard
0eb5250c26 Pass directory with changes to FSEvents observer 2018-10-29 19:49:28 +07:00
Allan Odgaard
85d5bb3fbe Fix indentation 2018-10-29 13:34:08 +07:00
Allan Odgaard
493620710b Avoid copying full status map for each file observer 2018-10-29 11:05:00 +07:00
Allan Odgaard
2354a485ef Don’t call repositoryAtURL: when we already have a repository 2018-10-29 10:59:12 +07:00
Allan Odgaard
82c0752c0f Remove method from SCMManager only used by one client 2018-10-29 10:53:32 +07:00
Allan Odgaard
c8beb6c238 Pass SCMRepository to observers (instead of status map) 2018-10-29 10:49:14 +07:00
Allan Odgaard
553a2c5912 Use SCMManager instead of scm framework for SCM status data source 2018-10-29 10:38:01 +07:00
Allan Odgaard
4d3de192ce Let SCMManager use the SCM drivers directly
Currently SCMManager is not as conservative about refreshing SCM status, specifically SCM status was previously not updated when the application was inactive, the latency for updating was pretty high (3 seconds).

We do however need to check if there are actual changes, as at least in the past, calling `hg` even when there are no changes, may cause file system to be updated, which will trigger a new status refresh.
2018-10-29 10:36:22 +07:00
Allan Odgaard
d5ea5d1d80 Add symbolic link to scm drivers
The drivers include ../status.h so we need to link to that file as well.
2018-10-29 10:29:47 +07:00
Allan Odgaard
82dda5588d Wrong URL got passed to SCMManager 2018-10-29 09:27:31 +07:00
Allan Odgaard
1e5fdcbc09 Allow observing subdirectories with FSEventsManager 2018-10-28 23:03:32 +07:00
Allan Odgaard
9f6d9d043e Do not have FSEventsManager load directory contents
Originally we had FSEventsManager handle directory loading because it worked as a cache, but it’s better to move this to the client, as not all clients need the directory content, additionally it simplifies the cache invalidation (reload) and also moves the hardcoded list of URL keys to preload into the client, which should know which keys are desired.
2018-10-28 22:38:10 +07:00
Allan Odgaard
f5e543dc77 Only allow observing full repository instead of “files with status” 2018-10-28 16:51:33 +07:00
Allan Odgaard
9f9bb5e255 Fix capitalization of URL in parentURL 2018-10-28 16:43:17 +07:00
Allan Odgaard
a5c4b979d5 Rename SCMRepository → SCMDirectory 2018-10-28 15:54:04 +07:00