Skip to content

Commit

Permalink
Merge pull request #354 from CodinGame/workbench-views-minor-fixes
Browse files Browse the repository at this point in the history
Workbench views minor fixes
  • Loading branch information
CGNonofr committed Feb 26, 2024
2 parents 051b03f + c9e49ee commit b08b43b
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 10 deletions.
1 change: 1 addition & 0 deletions demo/src/features/customView.views.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ registerCustomView({
container.style.display = 'flex'
container.style.alignItems = 'center'
container.style.justifyContent = 'center'
container.style.height = '100%'
container.innerHTML = 'This is a custom view<br />You can render anything you want here'

return {
Expand Down
1 change: 1 addition & 0 deletions demo/src/features/customView.workbench.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ registerCustomView({
container.style.display = 'flex'
container.style.alignItems = 'center'
container.style.justifyContent = 'center'
container.style.height = '100%'
container.innerHTML = 'This is a custom view<br />You can render anything you want here'

return {
Expand Down
43 changes: 34 additions & 9 deletions src/service-override/tools/views.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'
import { IViewContainerDescriptor, IViewContainersRegistry, IViewDescriptor, IViewsRegistry, ViewContainer, ViewContainerLocation, Extensions as ViewExtensions } from 'vs/workbench/common/views'
import { BrandedService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'
import { DisposableStore, IDisposable, MutableDisposable } from 'vs/base/common/lifecycle'
import { append, $, Dimension, size } from 'vs/base/browser/dom'
import { $, Dimension, size } from 'vs/base/browser/dom'
import { ViewPane } from 'vs/workbench/browser/parts/views/viewPane'
import { Registry } from 'vs/platform/registry/common/platform'
import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer'
Expand Down Expand Up @@ -280,15 +280,34 @@ function registerCustomView (options: CustomViewOption): IDisposable {
original: options.name
},
ctorDescriptor: new SyncDescriptor(class extends ViewPane {
private content?: HTMLElement
protected wrapper!: HTMLElement
protected container!: HTMLElement
private scrollbar: DomScrollableElement | undefined

protected override renderBody (container: HTMLElement): void {
super.renderBody(container)
this.content = $('.view-pane-content')
this.content.style.display = 'flex'
this.content.style.alignItems = 'stretch'
append(container, this.content)
this._register(options.renderBody(this.content))

this.container = $('.view-pane-content')
this.container.style.display = 'flex'
this.container.style.alignItems = 'stretch'
this._register(options.renderBody(this.container))

this.wrapper = document.createElement('div')
this.wrapper.append(this.container)

// Custom Scrollbars
this.scrollbar = this._register(new DomScrollableElement(this.wrapper, { horizontal: ScrollbarVisibility.Auto, vertical: ScrollbarVisibility.Auto }))
container.appendChild(this.scrollbar.getDomNode())

const observer = new ResizeObserver(() => {
assertIsDefined(this.scrollbar).scanDomNode()
})
observer.observe(this.container)
this._register({
dispose () {
observer.disconnect()
}
})
}

public override getActionViewItem (action: IAction, actionOptions?: IDropdownMenuActionViewItemOptions) {
Expand All @@ -303,8 +322,13 @@ function registerCustomView (options: CustomViewOption): IDisposable {
}

protected override layoutBody (height: number, width: number): void {
this.content!.style.height = `${height}px`
this.content!.style.width = `${width}px`
const [wrapper, scrollbar] = assertAllDefined(this.wrapper, this.scrollbar)

// Pass on to Container
size(wrapper, width, height)

// Adjust scrollbar
scrollbar.scanDomNode()
}
}),
canMoveView: options.canMoveView ?? true,
Expand Down Expand Up @@ -383,6 +407,7 @@ export {
ViewContainerLocation,
CustomViewOption,
registerCustomView,
ViewPaneContainer,
IEditorCloseHandler,
ConfirmResult,
registerEditorPane,
Expand Down
3 changes: 2 additions & 1 deletion src/service-override/workbench.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,8 @@ class CustomWorkbench extends Workbench {
}
}

setFullscreen(detectFullscreen(mainWindow) != null, mainWindow)
const detectedFullScreen = detectFullscreen(mainWindow)
setFullscreen(detectedFullScreen != null && !detectedFullScreen.guess, mainWindow)
onLayout(async accessor => {
(accessor.get(IWorkbenchLayoutService) as Workbench).startup()
})
Expand Down

0 comments on commit b08b43b

Please sign in to comment.