Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(452)

Side by Side Diff: chrome/browser/resources/options/chromeos/display_options.js

Issue 1633983002: Store layoutType in DisplayInfo + misc cleanup (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@issue_576375_display3c_fix_1
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.exportPath('options'); 5 cr.exportPath('options');
6 6
7 /** 7 /**
8 * Enumeration of display layout. These values must match the C++ values in 8 * Enumeration of display layout. These values must match the C++ values in
9 * ash::DisplayController. 9 * ash::DisplayController.
10 * @enum {number} 10 * @enum {number}
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 * }} 82 * }}
83 */ 83 */
84 options.DisplayInfo; 84 options.DisplayInfo;
85 85
86 /** 86 /**
87 * @typedef {{ 87 * @typedef {{
88 * bounds: !options.DisplayBounds, 88 * bounds: !options.DisplayBounds,
89 * div: ?HTMLElement, 89 * div: ?HTMLElement,
90 * id: string, 90 * id: string,
91 * isPrimary: boolean, 91 * isPrimary: boolean,
92 * layoutType: options.DisplayLayoutType,
92 * name: string, 93 * name: string,
93 * originalPosition: !options.DisplayPosition 94 * originalPosition: !options.DisplayPosition
94 * }} 95 * }}
95 */ 96 */
96 options.DisplayLayout; 97 options.DisplayLayout;
97 98
98 cr.define('options', function() { 99 cr.define('options', function() {
99 var Page = cr.ui.pageManager.Page; 100 var Page = cr.ui.pageManager.Page;
100 var PageManager = cr.ui.pageManager.PageManager; 101 var PageManager = cr.ui.pageManager.PageManager;
101 102
102 // The scale ratio of the display rectangle to its original size. 103 // The scale ratio of the display rectangle to its original size.
103 /** @const */ var VISUAL_SCALE = 1 / 10; 104 /** @const */ var VISUAL_SCALE = 1 / 10;
104 105
105 // The number of pixels to share the edges between displays. 106 // The number of pixels to share the edges between displays.
106 /** @const */ var MIN_OFFSET_OVERLAP = 5; 107 /** @const */ var MIN_OFFSET_OVERLAP = 5;
107 108
108 /** 109 /**
109 * Gets the position of |point| to |rect|, left, right, top, or bottom. 110 * Gets the layout type of |point| relative to |rect|.
110 * @param {!options.DisplayBounds} rect The base rectangle. 111 * @param {!options.DisplayBounds} rect The base rectangle.
111 * @param {!options.DisplayPosition} point The point to check the position. 112 * @param {!options.DisplayPosition} point The point to check the position.
112 * @return {options.DisplayLayoutType} The position of the calculated point. 113 * @return {options.DisplayLayoutType} The position of the calculated point.
xiyuan 2016/01/26 17:35:33 nit: update the comment here as well.
stevenjb 2016/01/26 18:18:10 Done in the next CL
113 */ 114 */
114 function getPositionToRectangle(rect, point) { 115 function getPositionToRectangle(rect, point) {
115 // Separates the area into four (LEFT/RIGHT/TOP/BOTTOM) by the diagonals of 116 // Separates the area into four (LEFT/RIGHT/TOP/BOTTOM) by the diagonals of
116 // the rect, and decides which area the display should reside. 117 // the rect, and decides which area the display should reside.
117 var diagonalSlope = rect.height / rect.width; 118 var diagonalSlope = rect.height / rect.width;
118 var topDownIntercept = rect.top - rect.left * diagonalSlope; 119 var topDownIntercept = rect.top - rect.left * diagonalSlope;
119 var bottomUpIntercept = rect.top + rect.height + rect.left * diagonalSlope; 120 var bottomUpIntercept = rect.top + rect.height + rect.left * diagonalSlope;
120 121
121 if (point.y > topDownIntercept + point.x * diagonalSlope) { 122 if (point.y > topDownIntercept + point.x * diagonalSlope) {
122 if (point.y > bottomUpIntercept - point.x * diagonalSlope) 123 if (point.y > bottomUpIntercept - point.x * diagonalSlope)
123 return options.DisplayLayoutType.BOTTOM; 124 return options.DisplayLayoutType.BOTTOM;
124 else 125 else
125 return options.DisplayLayoutType.LEFT; 126 return options.DisplayLayoutType.LEFT;
126 } else { 127 } else {
127 if (point.y > bottomUpIntercept - point.x * diagonalSlope) 128 if (point.y > bottomUpIntercept - point.x * diagonalSlope)
128 return options.DisplayLayoutType.RIGHT; 129 return options.DisplayLayoutType.RIGHT;
129 else 130 else
130 return options.DisplayLayoutType.TOP; 131 return options.DisplayLayoutType.TOP;
131 } 132 }
132 } 133 }
133 134
134 /** 135 /**
136 * Snaps the region [point, width] to [basePoint, baseWidth] if
137 * the [point, width] is close enough to the base's edge.
138 * @param {number} point The starting point of the region.
139 * @param {number} width The width of the region.
140 * @param {number} basePoint The starting point of the base region.
141 * @param {number} baseWidth The width of the base region.
142 * @return {number} The moved point. Returns the point itself if it doesn't
143 * need to snap to the edge.
144 * @private
145 */
146 function snapToEdge(point, width, basePoint, baseWidth) {
147 // If the edge of the region is smaller than this, it will snap to the
148 // base's edge.
149 /** @const */ var SNAP_DISTANCE_PX = 16;
150
151 var startDiff = Math.abs(point - basePoint);
152 var endDiff = Math.abs(point + width - (basePoint + baseWidth));
153 // Prefer the closer one if both edges are close enough.
154 if (startDiff < SNAP_DISTANCE_PX && startDiff < endDiff)
155 return basePoint;
156 else if (endDiff < SNAP_DISTANCE_PX)
157 return basePoint + baseWidth - width;
158
159 return point;
160 }
161
162 /**
135 * Encapsulated handling of the 'Display' page. 163 * Encapsulated handling of the 'Display' page.
136 * @constructor 164 * @constructor
137 * @extends {cr.ui.pageManager.Page} 165 * @extends {cr.ui.pageManager.Page}
138 */ 166 */
139 function DisplayOptions() { 167 function DisplayOptions() {
140 Page.call(this, 'display', 168 Page.call(this, 'display',
141 loadTimeData.getString('displayOptionsPageTabTitle'), 169 loadTimeData.getString('displayOptionsPageTabTitle'),
142 'display-options-page'); 170 'display-options-page');
143 } 171 }
144 172
(...skipping 17 matching lines...) Expand all
162 unifiedDesktopEnabled_: false, 190 unifiedDesktopEnabled_: false,
163 191
164 /** 192 /**
165 * Whether the unified desktop option should be present. 193 * Whether the unified desktop option should be present.
166 * @type {boolean} 194 * @type {boolean}
167 * @private 195 * @private
168 */ 196 */
169 showUnifiedDesktopOption_: false, 197 showUnifiedDesktopOption_: false,
170 198
171 /** 199 /**
172 * The current secondary display layout.
173 * @type {options.DisplayLayoutType}
174 * @private
175 */
176 layoutType_: options.DisplayLayoutType.RIGHT,
177
178 /**
179 * The array of current output displays. It also contains the display 200 * The array of current output displays. It also contains the display
180 * rectangles currently rendered on screen. 201 * rectangles currently rendered on screen.
181 * @type {!Array<!options.DisplayInfo>} 202 * @type {!Array<!options.DisplayInfo>}
182 * @private 203 * @private
183 */ 204 */
184 displays_: [], 205 displays_: [],
185 206
186 /** 207 /**
187 * An object containing DisplayLayout objects for each entry in |displays_|. 208 * An object containing DisplayLayout objects for each entry in |displays_|.
188 * @type {!Object<!options.DisplayLayout>} 209 * @type {!Object<!options.DisplayLayout>}
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 }, 439 },
419 440
420 /** 441 /**
421 * Collects the current data and sends it to Chrome. 442 * Collects the current data and sends it to Chrome.
422 * @private 443 * @private
423 */ 444 */
424 sendDragResult_: function() { 445 sendDragResult_: function() {
425 // Offset is calculated from top or left edge. 446 // Offset is calculated from top or left edge.
426 var primary = this.displayLayoutMap_[this.primaryDisplayId_]; 447 var primary = this.displayLayoutMap_[this.primaryDisplayId_];
427 var secondary = this.displayLayoutMap_[this.secondaryDisplayId_]; 448 var secondary = this.displayLayoutMap_[this.secondaryDisplayId_];
449 var layoutType = secondary.layoutType;
428 var offset; 450 var offset;
429 if (this.layoutType_ == options.DisplayLayoutType.LEFT || 451 if (layoutType == options.DisplayLayoutType.LEFT ||
430 this.layoutType_ == options.DisplayLayoutType.RIGHT) { 452 layoutType == options.DisplayLayoutType.RIGHT) {
431 offset = secondary.div.offsetTop - primary.div.offsetTop; 453 offset = secondary.div.offsetTop - primary.div.offsetTop;
432 } else { 454 } else {
433 offset = secondary.div.offsetLeft - primary.div.offsetLeft; 455 offset = secondary.div.offsetLeft - primary.div.offsetLeft;
434 } 456 }
435 offset = Math.floor(offset / this.visualScale_); 457 offset = Math.floor(offset / this.visualScale_);
436 chrome.send( 458 chrome.send('setDisplayLayout', [secondary.id, layoutType, offset]);
437 'setDisplayLayout', [secondary.id, this.layoutType_, offset]);
438 }, 459 },
439 460
440 /** 461 /**
441 * Snaps the region [point, width] to [basePoint, baseWidth] if
442 * the [point, width] is close enough to the base's edge.
443 * @param {number} point The starting point of the region.
444 * @param {number} width The width of the region.
445 * @param {number} basePoint The starting point of the base region.
446 * @param {number} baseWidth The width of the base region.
447 * @return {number} The moved point. Returns point itself if it doesn't
448 * need to snap to the edge.
449 * @private
450 */
451 snapToEdge_: function(point, width, basePoint, baseWidth) {
452 // If the edge of the regions is smaller than this, it will snap to the
453 // base's edge.
454 /** @const */ var SNAP_DISTANCE_PX = 16;
455
456 var startDiff = Math.abs(point - basePoint);
457 var endDiff = Math.abs(point + width - (basePoint + baseWidth));
458 // Prefer the closer one if both edges are close enough.
459 if (startDiff < SNAP_DISTANCE_PX && startDiff < endDiff)
460 return basePoint;
461 else if (endDiff < SNAP_DISTANCE_PX)
462 return basePoint + baseWidth - width;
463
464 return point;
465 },
466
467 /**
468 * Processes the actual dragging of display rectangle. 462 * Processes the actual dragging of display rectangle.
469 * @param {Event} e The event which triggers this drag. 463 * @param {Event} e The event which triggers this drag.
470 * @param {options.DisplayPosition} eventLocation The location where the 464 * @param {options.DisplayPosition} eventLocation The location where the
471 * event happens. 465 * event happens.
472 * @private 466 * @private
473 */ 467 */
474 processDragging_: function(e, eventLocation) { 468 processDragging_: function(e, eventLocation) {
475 if (!this.dragInfo_) 469 if (!this.dragInfo_)
476 return true; 470 return true;
477 471
478 e.preventDefault(); 472 e.preventDefault();
479 473
480 // Note that current code of moving display-rectangles doesn't work 474 // Note that current code of moving display-rectangles doesn't work
481 // if there are >=3 displays. This is our assumption for M21. 475 // if there are >=3 displays. This is our assumption for M21.
482 // TODO(mukai): Fix the code to allow >=3 displays. 476 // TODO(mukai): Fix the code to allow >=3 displays.
483 var dragInfo = this.dragInfo_; 477 var dragInfo = this.dragInfo_;
484 var dragLayout = this.displayLayoutMap_[dragInfo.displayId];
485 /** @type {options.DisplayPosition} */ var newPosition = { 478 /** @type {options.DisplayPosition} */ var newPosition = {
486 x: dragInfo.originalLocation.x + 479 x: dragInfo.originalLocation.x +
487 (eventLocation.x - dragInfo.eventLocation.x), 480 (eventLocation.x - dragInfo.eventLocation.x),
488 y: dragInfo.originalLocation.y + 481 y: dragInfo.originalLocation.y +
489 (eventLocation.y - dragInfo.eventLocation.y) 482 (eventLocation.y - dragInfo.eventLocation.y)
490 }; 483 };
491 484
485 var dragLayout = this.displayLayoutMap_[dragInfo.displayId];
486 var draggingDiv = dragLayout.div;
487
492 var baseDisplayId = dragLayout.isPrimary ? this.secondaryDisplayId_ : 488 var baseDisplayId = dragLayout.isPrimary ? this.secondaryDisplayId_ :
493 this.primaryDisplayId_; 489 this.primaryDisplayId_;
494 var baseDiv = this.displayLayoutMap_[baseDisplayId].div; 490 var baseLayout = this.displayLayoutMap_[baseDisplayId];
495 var draggingDiv = dragLayout.div; 491 var baseDiv = baseLayout.div;
496 492
497 newPosition.x = this.snapToEdge_(newPosition.x, draggingDiv.offsetWidth, 493 newPosition.x = snapToEdge(
498 baseDiv.offsetLeft, baseDiv.offsetWidth); 494 newPosition.x, draggingDiv.offsetWidth, baseDiv.offsetLeft,
499 newPosition.y = this.snapToEdge_(newPosition.y, draggingDiv.offsetHeight, 495 baseDiv.offsetWidth);
500 baseDiv.offsetTop, baseDiv.offsetHeight); 496 newPosition.y = snapToEdge(
497 newPosition.y, draggingDiv.offsetHeight, baseDiv.offsetTop,
498 baseDiv.offsetHeight);
501 499
502 /** @type {!options.DisplayPosition} */ var newCenter = { 500 /** @type {!options.DisplayPosition} */ var newCenter = {
503 x: newPosition.x + draggingDiv.offsetWidth / 2, 501 x: newPosition.x + draggingDiv.offsetWidth / 2,
504 y: newPosition.y + draggingDiv.offsetHeight / 2 502 y: newPosition.y + draggingDiv.offsetHeight / 2
505 }; 503 };
506 504
507 /** @type {!options.DisplayBounds} */ var baseBounds = { 505 /** @type {!options.DisplayBounds} */ var baseBounds = {
508 left: baseDiv.offsetLeft, 506 left: baseDiv.offsetLeft,
509 top: baseDiv.offsetTop, 507 top: baseDiv.offsetTop,
510 width: baseDiv.offsetWidth, 508 width: baseDiv.offsetWidth,
511 height: baseDiv.offsetHeight 509 height: baseDiv.offsetHeight
512 }; 510 };
513 511
514 var isPrimary = dragLayout.isPrimary; 512 var isPrimary = dragLayout.isPrimary;
515 var layoutType = this.layoutType_; 513 // layoutType is always stored in the secondary layout.
514 var layoutType =
515 isPrimary ? baseLayout.layoutType : dragLayout.layoutType;
516 516
517 switch (getPositionToRectangle(baseBounds, newCenter)) { 517 switch (getPositionToRectangle(baseBounds, newCenter)) {
518 case options.DisplayLayoutType.RIGHT: 518 case options.DisplayLayoutType.RIGHT:
519 layoutType = isPrimary ? options.DisplayLayoutType.LEFT : 519 layoutType = isPrimary ? options.DisplayLayoutType.LEFT :
520 options.DisplayLayoutType.RIGHT; 520 options.DisplayLayoutType.RIGHT;
521 break; 521 break;
522 case options.DisplayLayoutType.LEFT: 522 case options.DisplayLayoutType.LEFT:
523 layoutType = isPrimary ? options.DisplayLayoutType.RIGHT : 523 layoutType = isPrimary ? options.DisplayLayoutType.RIGHT :
524 options.DisplayLayoutType.LEFT; 524 options.DisplayLayoutType.LEFT;
525 break; 525 break;
(...skipping 17 matching lines...) Expand all
543 options.DisplayLayoutType.TOP; 543 options.DisplayLayoutType.TOP;
544 } else { 544 } else {
545 if (newPosition.x > baseDiv.offsetLeft + baseDiv.offsetWidth) 545 if (newPosition.x > baseDiv.offsetLeft + baseDiv.offsetWidth)
546 layoutType = isPrimary ? options.DisplayLayoutType.LEFT : 546 layoutType = isPrimary ? options.DisplayLayoutType.LEFT :
547 options.DisplayLayoutType.RIGHT; 547 options.DisplayLayoutType.RIGHT;
548 else if (newPosition.x + draggingDiv.offsetWidth < baseDiv.offsetLeft) 548 else if (newPosition.x + draggingDiv.offsetWidth < baseDiv.offsetLeft)
549 layoutType = isPrimary ? options.DisplayLayoutType.RIGHT : 549 layoutType = isPrimary ? options.DisplayLayoutType.RIGHT :
550 options.DisplayLayoutType.LEFT; 550 options.DisplayLayoutType.LEFT;
551 } 551 }
552 552
553 this.layoutType_ = layoutType;
554
555 var layoutToBase; 553 var layoutToBase;
556 if (!isPrimary) { 554 if (!isPrimary) {
555 dragLayout.layoutType = layoutType;
557 layoutToBase = layoutType; 556 layoutToBase = layoutType;
558 } else { 557 } else {
558 baseLayout.layoutType = layoutType;
559 switch (layoutType) { 559 switch (layoutType) {
560 case options.DisplayLayoutType.RIGHT: 560 case options.DisplayLayoutType.RIGHT:
561 layoutToBase = options.DisplayLayoutType.LEFT; 561 layoutToBase = options.DisplayLayoutType.LEFT;
562 break; 562 break;
563 case options.DisplayLayoutType.LEFT: 563 case options.DisplayLayoutType.LEFT:
564 layoutToBase = options.DisplayLayoutType.RIGHT; 564 layoutToBase = options.DisplayLayoutType.RIGHT;
565 break; 565 break;
566 case options.DisplayLayoutType.TOP: 566 case options.DisplayLayoutType.TOP:
567 layoutToBase = options.DisplayLayoutType.BOTTOM; 567 layoutToBase = options.DisplayLayoutType.BOTTOM;
568 break; 568 break;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 */ 653 */
654 endDragging_: function(e) { 654 endDragging_: function(e) {
655 this.lastTouchLocation_ = null; 655 this.lastTouchLocation_ = null;
656 if (!this.dragInfo_) 656 if (!this.dragInfo_)
657 return false; 657 return false;
658 658
659 // Make sure the dragging location is connected. 659 // Make sure the dragging location is connected.
660 var dragLayout = this.displayLayoutMap_[this.dragInfo_.displayId]; 660 var dragLayout = this.displayLayoutMap_[this.dragInfo_.displayId];
661 var baseDisplayId = dragLayout.isPrimary ? this.secondaryDisplayId_ : 661 var baseDisplayId = dragLayout.isPrimary ? this.secondaryDisplayId_ :
662 this.primaryDisplayId_; 662 this.primaryDisplayId_;
663 var baseDiv = this.displayLayoutMap_[baseDisplayId].div; 663
664 var baseLayout = this.displayLayoutMap_[baseDisplayId];
665 var baseDiv = baseLayout.div;
664 var draggingDiv = dragLayout.div; 666 var draggingDiv = dragLayout.div;
665 if (this.layoutType_ == options.DisplayLayoutType.LEFT || 667
666 this.layoutType_ == options.DisplayLayoutType.RIGHT) { 668 // layoutType is always stored in the secondary layout.
669 var layoutType =
670 dragLayout.isPrimary ? baseLayout.layoutType : dragLayout.layoutType;
671
672 if (layoutType == options.DisplayLayoutType.LEFT ||
673 layoutType == options.DisplayLayoutType.RIGHT) {
667 var top = Math.max( 674 var top = Math.max(
668 draggingDiv.offsetTop, 675 draggingDiv.offsetTop,
669 baseDiv.offsetTop - draggingDiv.offsetHeight + MIN_OFFSET_OVERLAP); 676 baseDiv.offsetTop - draggingDiv.offsetHeight + MIN_OFFSET_OVERLAP);
670 top = Math.min( 677 top = Math.min(
671 top, baseDiv.offsetTop + baseDiv.offsetHeight - MIN_OFFSET_OVERLAP); 678 top, baseDiv.offsetTop + baseDiv.offsetHeight - MIN_OFFSET_OVERLAP);
672 draggingDiv.style.top = top + 'px'; 679 draggingDiv.style.top = top + 'px';
673 } else { 680 } else {
674 var left = Math.max( 681 var left = Math.max(
675 draggingDiv.offsetLeft, 682 draggingDiv.offsetLeft,
676 baseDiv.offsetLeft - draggingDiv.offsetWidth + MIN_OFFSET_OVERLAP); 683 baseDiv.offsetLeft - draggingDiv.offsetWidth + MIN_OFFSET_OVERLAP);
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 div.className = 'displays-display'; 890 div.className = 'displays-display';
884 div.style.top = i * MIRRORING_OFFSET_PIXELS + 'px'; 891 div.style.top = i * MIRRORING_OFFSET_PIXELS + 'px';
885 div.style.left = i * MIRRORING_OFFSET_PIXELS + offsetX + 'px'; 892 div.style.left = i * MIRRORING_OFFSET_PIXELS + offsetX + 'px';
886 div.style.width = width + 'px'; 893 div.style.width = width + 'px';
887 div.style.height = height + 'px'; 894 div.style.height = height + 'px';
888 div.style.zIndex = i; 895 div.style.zIndex = i;
889 // set 'display-mirrored' class for the background display rectangles. 896 // set 'display-mirrored' class for the background display rectangles.
890 if (i != numDisplays - 1) 897 if (i != numDisplays - 1)
891 div.classList.add('display-mirrored'); 898 div.classList.add('display-mirrored');
892 this.displaysView_.appendChild(div); 899 this.displaysView_.appendChild(div);
893
894 // Not currently used but set for consistency / debugging.
895 this.displayLayoutMap_[this.displays_[i].id].div = div;
896 } 900 }
897 }, 901 },
898 902
899 /** 903 /**
900 * Creates a DisplayLayout object representing the display. 904 * Creates a DisplayLayout object representing the display.
901 * @param {!options.DisplayInfo} display 905 * @param {!options.DisplayInfo} display
906 * @param {!options.DisplayLayoutType} layoutType
902 * @return {!options.DisplayLayout} 907 * @return {!options.DisplayLayout}
903 * @private 908 * @private
904 */ 909 */
905 createDisplayLayout_: function(display) { 910 createDisplayLayout_: function(display, layoutType) {
906 /** @type {options.DisplayLayout} */ var displayLayout = { 911 return {
907 bounds: display.bounds, 912 bounds: display.bounds,
908 div: null, 913 div: null,
909 id: display.id, 914 id: display.id,
910 isPrimary: display.isPrimary, 915 isPrimary: display.isPrimary,
916 layoutType: layoutType,
911 name: display.name, 917 name: display.name,
912 originalPosition: {x: 0, y: 0} 918 originalPosition: {x: 0, y: 0}
913 }; 919 };
914 return displayLayout;
915 }, 920 },
916 921
917 /** 922 /**
918 * Creates a div element representing the specified display. 923 * Creates a div element representing the specified display.
919 * @param {!options.DisplayLayout} displayLayout 924 * @param {!options.DisplayLayout} displayLayout
920 * @param {options.DisplayLayoutType} layoutType The layout type for the 925 * @param {options.DisplayLayoutType} layoutType The layout type for the
921 * secondary display. 926 * secondary display.
922 * @param {!options.DisplayPosition} offset The offset to the center of the 927 * @param {!options.DisplayPosition} offset The offset to the center of the
923 * display area. 928 * display area.
924 * @private 929 * @private
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 * @private 1069 * @private
1065 */ 1070 */
1066 onDisplayChanged_: function(mode, displays, layoutType, offset) { 1071 onDisplayChanged_: function(mode, displays, layoutType, offset) {
1067 if (!this.visible) 1072 if (!this.visible)
1068 return; 1073 return;
1069 1074
1070 this.displays_ = displays; 1075 this.displays_ = displays;
1071 this.displayLayoutMap_ = {}; 1076 this.displayLayoutMap_ = {};
1072 for (var i = 0; i < displays.length; i++) { 1077 for (var i = 0; i < displays.length; i++) {
1073 var display = displays[i]; 1078 var display = displays[i];
1074 this.displayLayoutMap_[display.id] = this.createDisplayLayout_(display); 1079 this.displayLayoutMap_[display.id] =
1080 this.createDisplayLayout_(display, layoutType);
1075 } 1081 }
1076 1082
1077 var mirroring = mode == options.MultiDisplayMode.MIRRORING; 1083 var mirroring = mode == options.MultiDisplayMode.MIRRORING;
1078 var unifiedDesktopEnabled = mode == options.MultiDisplayMode.UNIFIED; 1084 var unifiedDesktopEnabled = mode == options.MultiDisplayMode.UNIFIED;
1079 1085
1080 // Focus to the first display next to the primary one when |displays_| 1086 // Focus to the first display next to the primary one when |displays_|
1081 // is updated. 1087 // is updated.
1082 if (mirroring) { 1088 if (mirroring) {
1083 this.focusedId_ = ''; 1089 this.focusedId_ = '';
1084 } else if ( 1090 } else if (
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1122 mode, displays, layoutType, offset) { 1128 mode, displays, layoutType, offset) {
1123 DisplayOptions.getInstance().onDisplayChanged_( 1129 DisplayOptions.getInstance().onDisplayChanged_(
1124 mode, displays, layoutType, offset); 1130 mode, displays, layoutType, offset);
1125 }; 1131 };
1126 1132
1127 // Export 1133 // Export
1128 return { 1134 return {
1129 DisplayOptions: DisplayOptions 1135 DisplayOptions: DisplayOptions
1130 }; 1136 };
1131 }); 1137 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698