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

Side by Side Diff: Source/WebCore/inspector/front-end/StylesSidebarPane.js

Issue 7708012: Merge 92764 - Web Inspector: [REGRESSION] Editor lost after committing a CSS property value for i... (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/835/
Patch Set: Created 9 years, 4 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 | « Source/WebCore/ChangeLog ('k') | 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 /* 1 /*
2 * Copyright (C) 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2007 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Joseph Pecoraro 3 * Copyright (C) 2009 Joseph Pecoraro
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 node = null; 231 node = null;
232 232
233 if (node) 233 if (node)
234 this.node = node; 234 this.node = node;
235 else 235 else
236 node = this.node; 236 node = this.node;
237 237
238 this._innerUpdate(refresh, null); 238 this._innerUpdate(refresh, null);
239 }, 239 },
240 240
241 _innerUpdate: function(refresh, editedSection) 241 _innerUpdate: function(refresh, editedSection, userCallback)
242 { 242 {
243 var node = this.node; 243 var node = this.node;
244 if (!node) { 244 if (!node) {
245 this._sectionsContainer.removeChildren(); 245 this._sectionsContainer.removeChildren();
246 this._computedStylePane.bodyElement.removeChildren(); 246 this._computedStylePane.bodyElement.removeChildren();
247 this.sections = {}; 247 this.sections = {};
248 if (userCallback)
249 userCallback();
248 return; 250 return;
249 } 251 }
250 252
251 function stylesCallback(styles) 253 function stylesCallback(styles)
252 { 254 {
253 if (this.node === node && styles) 255 if (this.node === node && styles)
254 this._rebuildUpdate(node, styles); 256 this._rebuildUpdate(node, styles);
257 if (userCallback)
258 userCallback();
255 } 259 }
256 260
257 function computedStyleCallback(computedStyle) 261 function computedStyleCallback(computedStyle)
258 { 262 {
259 if (this.node === node && computedStyle) 263 if (this.node === node && computedStyle)
260 this._refreshUpdate(node, computedStyle, editedSection); 264 this._refreshUpdate(node, computedStyle, editedSection);
265 if (userCallback)
266 userCallback();
261 } 267 }
262 268
263 if (refresh) 269 if (refresh)
264 WebInspector.cssModel.getComputedStyleAsync(node.id, computedStyleCa llback.bind(this)); 270 WebInspector.cssModel.getComputedStyleAsync(node.id, computedStyleCa llback.bind(this));
265 else 271 else
266 WebInspector.cssModel.getStylesAsync(node.id, this._forcedPseudoClas ses, stylesCallback.bind(this)); 272 WebInspector.cssModel.getStylesAsync(node.id, this._forcedPseudoClas ses, stylesCallback.bind(this));
267 }, 273 },
268 274
269 _styleSheetChanged: function() 275 _styleSheetChanged: function()
270 { 276 {
(...skipping 1333 matching lines...) Expand 10 before | Expand all | Expand 10 after
1604 // Avoid having longhands under an invalid shorthand. 1610 // Avoid having longhands under an invalid shorthand.
1605 this.hasChildren = false; 1611 this.hasChildren = false;
1606 this.listItemElement.addStyleClass("not-parsed-ok"); 1612 this.listItemElement.addStyleClass("not-parsed-ok");
1607 } 1613 }
1608 if (this.property.inactive) 1614 if (this.property.inactive)
1609 this.listItemElement.addStyleClass("inactive"); 1615 this.listItemElement.addStyleClass("inactive");
1610 1616
1611 this.tooltip = this.property.propertyText; 1617 this.tooltip = this.property.propertyText;
1612 }, 1618 },
1613 1619
1614 _updateAll: function() 1620 _updatePane: function(userCallback)
1615 { 1621 {
1616 if (!this.treeOutline) 1622 if (this.treeOutline && this.treeOutline.section && this.treeOutline.sec tion.pane)
1617 return; 1623 this.treeOutline.section.pane._innerUpdate(true, this.treeOutline.se ction, userCallback);
1618 if (this.treeOutline.section && this.treeOutline.section.pane) 1624 else {
1619 this.treeOutline.section.pane._innerUpdate(true, this.treeOutline.se ction); 1625 if (userCallback)
1620 else if (this.treeOutline.section) 1626 userCallback();
1621 this.treeOutline.section.update(true); 1627 }
1622 else
1623 this.updateTitle(); // FIXME: this will not show new properties. But we don't hit this case yet.
1624 }, 1628 },
1625 1629
1626 toggleEnabled: function(event) 1630 toggleEnabled: function(event)
1627 { 1631 {
1628 var disabled = !event.target.checked; 1632 var disabled = !event.target.checked;
1629 1633
1630 function callback(newStyle) 1634 function callback(newStyle)
1631 { 1635 {
1632 if (!newStyle) 1636 if (!newStyle)
1633 return; 1637 return;
1634 1638
1635 this.style = newStyle; 1639 this.style = newStyle;
1636 this._styleRule.style = newStyle; 1640 this._styleRule.style = newStyle;
1637 1641
1638 if (this.treeOutline.section && this.treeOutline.section.pane) 1642 if (this.treeOutline.section && this.treeOutline.section.pane)
1639 this.treeOutline.section.pane.dispatchEventToListeners("style pr operty toggled"); 1643 this.treeOutline.section.pane.dispatchEventToListeners("style pr operty toggled");
1640 1644
1641 this._updateAll(); 1645 this._updatePane();
1642 } 1646 }
1643 1647
1644 this.property.setDisabled(disabled, callback.bind(this)); 1648 this.property.setDisabled(disabled, callback.bind(this));
1645 }, 1649 },
1646 1650
1647 updateState: function() 1651 updateState: function()
1648 { 1652 {
1649 if (!this.listItemElement) 1653 if (!this.listItemElement)
1650 return; 1654 return;
1651 1655
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
2073 2077
2074 _hasBeenModifiedIncrementally: function() 2078 _hasBeenModifiedIncrementally: function()
2075 { 2079 {
2076 // New properties applied via up/down have an originalPropertyText and w ill be deleted later 2080 // New properties applied via up/down have an originalPropertyText and w ill be deleted later
2077 // on, if cancelled, when the empty string gets applied as their style t ext. 2081 // on, if cancelled, when the empty string gets applied as their style t ext.
2078 return typeof this.originalPropertyText === "string"; 2082 return typeof this.originalPropertyText === "string";
2079 }, 2083 },
2080 2084
2081 applyStyleText: function(styleText, updateInterface, majorChange, isRevert) 2085 applyStyleText: function(styleText, updateInterface, majorChange, isRevert)
2082 { 2086 {
2087 function userOperationFinishedCallback(parentPane, updateInterface)
2088 {
2089 if (updateInterface)
2090 delete parentPane._userOperation;
2091 }
2092
2083 // Leave a way to cancel editing after incremental changes. 2093 // Leave a way to cancel editing after incremental changes.
2084 if (!isRevert && !updateInterface && !this._hasBeenModifiedIncrementally ()) { 2094 if (!isRevert && !updateInterface && !this._hasBeenModifiedIncrementally ()) {
2085 // Remember the rule's original CSS text on [Page](Up|Down), so it c an be restored 2095 // Remember the rule's original CSS text on [Page](Up|Down), so it c an be restored
2086 // if the editing is canceled. 2096 // if the editing is canceled.
2087 this.originalPropertyText = this.property.propertyText; 2097 this.originalPropertyText = this.property.propertyText;
2088 } 2098 }
2089 2099
2090 var section = this.treeOutline.section; 2100 var section = this.treeOutline.section;
2091 var elementsPanel = WebInspector.panels.elements; 2101 var elementsPanel = WebInspector.panels.elements;
2092 styleText = styleText.replace(/\s/g, " ").trim(); // Replace   with whitespace. 2102 styleText = styleText.replace(/\s/g, " ").trim(); // Replace   with whitespace.
2093 var styleTextLength = styleText.length; 2103 var styleTextLength = styleText.length;
2094 if (!styleTextLength && updateInterface && !isRevert && this._newPropert y && !this._hasBeenModifiedIncrementally()) { 2104 if (!styleTextLength && updateInterface && !isRevert && this._newPropert y && !this._hasBeenModifiedIncrementally()) {
2095 // The user deleted everything and never applied a new property valu e via Up/Down scrolling, so remove the tree element and update. 2105 // The user deleted everything and never applied a new property valu e via Up/Down scrolling, so remove the tree element and update.
2096 this.parent.removeChild(this); 2106 this.parent.removeChild(this);
2097 section.afterUpdate(); 2107 section.afterUpdate();
2098 return; 2108 return;
2099 } 2109 }
2100 2110
2101 var currentNode = this._parentPane.node; 2111 var currentNode = this._parentPane.node;
2102 this._parentPane._userOperation = true; 2112 if (updateInterface)
2113 this._parentPane._userOperation = true;
2103 2114
2104 function callback(originalPropertyText, newStyle) 2115 function callback(userCallback, originalPropertyText, newStyle)
2105 { 2116 {
2106 delete this._parentPane._userOperation;
2107 if (!newStyle) { 2117 if (!newStyle) {
2108 if (updateInterface) { 2118 if (updateInterface) {
2109 // It did not apply, cancel editing. 2119 // It did not apply, cancel editing.
2110 this._revertStyleUponEditingCanceled(originalPropertyText); 2120 this._revertStyleUponEditingCanceled(originalPropertyText);
2111 } 2121 }
2122 userCallback();
2112 return; 2123 return;
2113 } 2124 }
2114 2125
2115 this.style = newStyle; 2126 this.style = newStyle;
2116 this.property = newStyle.propertyAt(this.property.index); 2127 this.property = newStyle.propertyAt(this.property.index);
2117 this._styleRule.style = this.style; 2128 this._styleRule.style = this.style;
2118 2129
2119 if (section && section.pane) 2130 if (section && section.pane)
2120 section.pane.dispatchEventToListeners("style edited"); 2131 section.pane.dispatchEventToListeners("style edited");
2121 2132
2122 if (updateInterface && currentNode === section.pane.node) 2133 if (updateInterface && currentNode === section.pane.node) {
2123 this._updateAll(); 2134 this._updatePane(userCallback);
2135 return;
2136 }
2137
2138 userCallback();
2124 } 2139 }
2125 2140
2126 // Append a ";" if the new text does not end in ";". 2141 // Append a ";" if the new text does not end in ";".
2127 // FIXME: this does not handle trailing comments. 2142 // FIXME: this does not handle trailing comments.
2128 if (styleText.length && !/;\s*$/.test(styleText)) 2143 if (styleText.length && !/;\s*$/.test(styleText))
2129 styleText += ";"; 2144 styleText += ";";
2130 this.property.setText(styleText, majorChange, callback.bind(this, this.o riginalPropertyText)); 2145 this.property.setText(styleText, majorChange, callback.bind(this, userOp erationFinishedCallback.bind(null, this._parentPane, updateInterface), this.orig inalPropertyText));
2131 } 2146 }
2132 } 2147 }
2133 2148
2134 WebInspector.StylePropertyTreeElement.prototype.__proto__ = TreeElement.prototyp e; 2149 WebInspector.StylePropertyTreeElement.prototype.__proto__ = TreeElement.prototyp e;
2135 2150
2136 WebInspector.StylesSidebarPane.CSSPropertyPrompt = function(element, cssCompleti ons) 2151 WebInspector.StylesSidebarPane.CSSPropertyPrompt = function(element, cssCompleti ons)
2137 { 2152 {
2138 WebInspector.TextPrompt.call(this, element, this._buildPropertyCompletions.b ind(this), WebInspector.StylesSidebarPane.StyleValueDelimiters, true); 2153 WebInspector.TextPrompt.call(this, element, this._buildPropertyCompletions.b ind(this), WebInspector.StylesSidebarPane.StyleValueDelimiters, true);
2139 this._cssCompletions = cssCompletions; 2154 this._cssCompletions = cssCompletions;
2140 } 2155 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
2200 return completionsReadyCallback(results); 2215 return completionsReadyCallback(results);
2201 } 2216 }
2202 2217
2203 results = this._cssCompletions.startsWith(prefix); 2218 results = this._cssCompletions.startsWith(prefix);
2204 if (results) 2219 if (results)
2205 completionsReadyCallback(results); 2220 completionsReadyCallback(results);
2206 } 2221 }
2207 } 2222 }
2208 2223
2209 WebInspector.StylesSidebarPane.CSSPropertyPrompt.prototype.__proto__ = WebInspec tor.TextPrompt.prototype; 2224 WebInspector.StylesSidebarPane.CSSPropertyPrompt.prototype.__proto__ = WebInspec tor.TextPrompt.prototype;
OLDNEW
« no previous file with comments | « Source/WebCore/ChangeLog ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698