Fix dialog z-index issue
Summary: Fixes T7081. History here: - JX.Scrollbar made the page scroll weird when a dialog came up because it was half-frame and half-document. - I made it fully frame-level. - But this wasn't really right; a better fix is to make it fully document-level. Test Plan: - Weird scroll on opening dialog is still fixed. - iOS Safari no longer puts the mask over the dialog. Reviewers: btrahan, chad Reviewed By: chad Subscribers: epriestley Maniphest Tasks: T7081 Differential Revision: https://secure.phabricator.com/D11559
This commit is contained in:
		| @@ -8,7 +8,7 @@ | ||||
| return array( | ||||
|   'names' => array( | ||||
|     'core.pkg.css' => '8815f87d', | ||||
|     'core.pkg.js' => 'a27c1b62', | ||||
|     'core.pkg.js' => '65e04767', | ||||
|     'darkconsole.pkg.js' => '8ab24e01', | ||||
|     'differential.pkg.css' => '8af45893', | ||||
|     'differential.pkg.js' => '7b5a4aa4', | ||||
| @@ -203,7 +203,7 @@ return array( | ||||
|     'rsrc/externals/javelin/lib/URI.js' => '6eff08aa', | ||||
|     'rsrc/externals/javelin/lib/Vector.js' => '2caa8fb8', | ||||
|     'rsrc/externals/javelin/lib/WebSocket.js' => '3f840822', | ||||
|     'rsrc/externals/javelin/lib/Workflow.js' => 'a2ccdfec', | ||||
|     'rsrc/externals/javelin/lib/Workflow.js' => '84d6aea0', | ||||
|     'rsrc/externals/javelin/lib/__tests__/Cookie.js' => '5ed109e8', | ||||
|     'rsrc/externals/javelin/lib/__tests__/DOM.js' => 'c984504b', | ||||
|     'rsrc/externals/javelin/lib/__tests__/JSON.js' => '837a7d68', | ||||
| @@ -691,7 +691,7 @@ return array( | ||||
|     'javelin-view-renderer' => '6c2b09a2', | ||||
|     'javelin-view-visitor' => 'efe49472', | ||||
|     'javelin-websocket' => '3f840822', | ||||
|     'javelin-workflow' => 'a2ccdfec', | ||||
|     'javelin-workflow' => '84d6aea0', | ||||
|     'lightbox-attachment-css' => '7acac05d', | ||||
|     'maniphest-batch-editor' => '8f380ebc', | ||||
|     'maniphest-report-css' => '6fc16517', | ||||
| @@ -1420,6 +1420,17 @@ return array( | ||||
|       'javelin-workflow', | ||||
|       'phabricator-draggable-list', | ||||
|     ), | ||||
|     '84d6aea0' => array( | ||||
|       'javelin-stratcom', | ||||
|       'javelin-request', | ||||
|       'javelin-dom', | ||||
|       'javelin-vector', | ||||
|       'javelin-install', | ||||
|       'javelin-util', | ||||
|       'javelin-mask', | ||||
|       'javelin-uri', | ||||
|       'javelin-routable', | ||||
|     ), | ||||
|     '851f167c' => array( | ||||
|       'javelin-behavior', | ||||
|       'javelin-aphlict', | ||||
| @@ -1579,17 +1590,6 @@ return array( | ||||
|       'javelin-vector', | ||||
|       'javelin-magical-init', | ||||
|     ), | ||||
|     'a2ccdfec' => array( | ||||
|       'javelin-stratcom', | ||||
|       'javelin-request', | ||||
|       'javelin-dom', | ||||
|       'javelin-vector', | ||||
|       'javelin-install', | ||||
|       'javelin-util', | ||||
|       'javelin-mask', | ||||
|       'javelin-uri', | ||||
|       'javelin-routable', | ||||
|     ), | ||||
|     'a4ae61bf' => array( | ||||
|       'javelin-install', | ||||
|       'javelin-dom', | ||||
|   | ||||
							
								
								
									
										16
									
								
								webroot/rsrc/externals/javelin/lib/Workflow.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								webroot/rsrc/externals/javelin/lib/Workflow.js
									
									
									
									
										vendored
									
									
								
							| @@ -172,11 +172,15 @@ JX.install('Workflow', { | ||||
|           [], | ||||
|           JX.Workflow._onsyntheticsubmit); | ||||
|  | ||||
|         var frame = JX.DOM.getContentFrame(); | ||||
|         frame.appendChild(this._root); | ||||
|         // Note that even in the presence of a content frame, we're doing | ||||
|         // everything here at top level: dialogs are fully modal and cover | ||||
|         // the entire window. | ||||
|  | ||||
|         document.body.appendChild(this._root); | ||||
|  | ||||
|         var d = JX.Vector.getDim(this._root); | ||||
|         var v = JX.Vector.getDim(frame); | ||||
|         var s = JX.Vector.getAggregateScrollForNode(frame); | ||||
|         var v = JX.Vector.getViewport(); | ||||
|         var s = JX.Vector.getScroll(); | ||||
|  | ||||
|         // Normally, we position dialogs 100px from the top of the screen. | ||||
|         // Use more space if the dialog is large (at least roughly the size | ||||
| @@ -206,7 +210,9 @@ JX.install('Workflow', { | ||||
|         // The `focus()` call may have scrolled the window. Scroll it back to | ||||
|         // where it was before -- we want to focus the control, but not adjust | ||||
|         // the scroll position. | ||||
|         JX.DOM.scrollToPosition(s.x, s.y); | ||||
|  | ||||
|         // Dialogs are window-level, so scroll the window explicitly. | ||||
|         window.scrollTo(s.x, s.y); | ||||
|  | ||||
|       } else if (this.getHandler()) { | ||||
|         this.getHandler()(r); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 epriestley
					epriestley