Closed Bug 1432035 Opened 6 years ago Closed 6 years ago

Visualize the align-items in the flexbox highlighter

Categories

(DevTools :: Inspector, enhancement, P3)

enhancement

Tracking

(firefox61 fixed)

RESOLVED FIXED
Firefox 61
Tracking Status
firefox61 --- fixed

People

(Reporter: gl, Assigned: mashuoyi111)

References

(Blocks 1 open bug)

Details

Attachments

(1 file, 5 obsolete files)

      No description provided.
Attached patch 1432035.patch (obsolete) — Splinter Review
Attachment #8944285 - Flags: review?(gl)
Attached patch 1432035.patch (obsolete) — Splinter Review
Attachment #8944288 - Flags: review?(gl)
Attachment #8944285 - Attachment is obsolete: true
Attachment #8944285 - Flags: review?(gl)
Comment on attachment 8944288 [details] [diff] [review]
1432035.patch

Review of attachment 8944288 [details] [diff] [review]:
-----------------------------------------------------------------

::: devtools/server/actors/highlighters/flexbox.js
@@ +258,5 @@
>      if (isTopLevel) {
>        this.hide();
>      }
>    }
> +  renderFlexAlignItems() {

Rename this to renderAlignItemLine

@@ +263,5 @@
> +    if (!this.currentQuads.content || !this.currentQuads.content[0]) {
> +      return;
> +    }
> +
> +    let computedStyle = getComputedStyle(this.currentNode);

Move the declaration of computedStyle and flexLines below the bounds assignment in line 283.

@@ +287,5 @@
> +
> +      switch (computedStyle.getPropertyValue("align-items")) {
> +        case "flex-start":
> +        case "start":
> +          if (computedStyle.getPropertyValue("flex-direction") === "column" ||

Maybe we can simplify the check for "column" and "column-reverse" by using 

computedStyle.getPropertyValue("flex-direction").startsWith("column")

@@ +295,5 @@
> +            this.ctx.stroke();
> +          } else {
> +            drawRect(this.ctx, 0, crossStart, bounds.width, crossStart,
> +              this.currentMatrix);
> +            this.ctx.stroke();

We can simply move this.ctx.stroke() outside the if statement so we can just call it once.

@@ +301,5 @@
> +
> +          break;
> +        case "flex-end":
> +        case "end":
> +          if (computedStyle.getPropertyValue("flex-direction") === "column" ||

computedStyle.getPropertyValue("flex-direction").startsWith("column")

@@ +305,5 @@
> +          if (computedStyle.getPropertyValue("flex-direction") === "column" ||
> +              computedStyle.getPropertyValue("flex-direction") === "column-reverse") {
> +            drawRect(this.ctx, crossStart + crossSize, 0, crossStart + crossSize,
> +              bounds.height, this.currentMatrix);
> +            this.ctx.stroke();

Move this.ctx.stroke() out.

@@ +315,5 @@
> +
> +          break;
> +        case "center":
> +        case "normal":
> +          if (computedStyle.getPropertyValue("flex-direction") === "column" ||

computedStyle.getPropertyValue("flex-direction").startsWith("column")

@@ +323,5 @@
> +            this.ctx.stroke();
> +          } else {
> +            drawRect(this.ctx, 0, crossStart + crossSize / 2, bounds.width,
> +            crossStart + crossSize / 2, this.currentMatrix);
> +            this.ctx.stroke();

Move this.ctx.stroke() out.
Attachment #8944288 - Flags: review?(gl)
Attachment #8944288 - Attachment is obsolete: true
Attached patch 1432035.patch (obsolete) — Splinter Review
I did not apply the if statement changes since the bug 1432036 does not fit the change.
Attachment #8946102 - Flags: review?(gl)
Comment on attachment 8946102 [details] [diff] [review]
1432035.patch

Review of attachment 8946102 [details] [diff] [review]:
-----------------------------------------------------------------

::: devtools/server/actors/highlighters/flexbox.js
@@ +248,5 @@
>     * the cached gap patterns and avoid using DeadWrapper obejcts as gap patterns the
>     * next time.
>     */
>    onWillNavigate({ isTopLevel }) {
>      this.clearCache();

Don't remove this line

@@ +279,5 @@
> +
> +    for (let flexLine of flexLines) {
> +      let { crossStart, crossSize } = flexLine;
> +
> +      switch (computedStyle.getPropertyValue("align-items")) {

We can save the align-items property value in a variable after computedStyle to avoid getting this multiple times.

@@ +282,5 @@
> +
> +      switch (computedStyle.getPropertyValue("align-items")) {
> +        case "flex-start":
> +        case "start":
> +          if (computedStyle.getPropertyValue("flex-direction").startsWith("column")) {

Same as above we can add a isColumn variable

@@ +330,5 @@
>  
>    renderFlexContainerBorder() {
>      if (!this.currentQuads.content || !this.currentQuads.content[0]) {
>        return;
>      }

Don't remove this line

@@ +512,5 @@
>      // Update the current matrix used in our canvas' rendering
>      let { currentMatrix, hasNodeTransformations } = getCurrentMatrix(this.currentNode,
>        this.win);
>      this.currentMatrix = currentMatrix;
>      this.hasNodeTransformations = hasNodeTransformations;

Don't remove this line

@@ +522,1 @@
>      this._showFlexbox();

Don't remove this line
Attachment #8946102 - Flags: review?(gl)
Attached patch 1432035.patch (obsolete) — Splinter Review
Attachment #8949231 - Flags: review?(gl)
Attachment #8946102 - Attachment is obsolete: true
Comment on attachment 8949231 [details] [diff] [review]
1432035.patch

Review of attachment 8949231 [details] [diff] [review]:
-----------------------------------------------------------------

::: devtools/server/actors/highlighters/flexbox.js
@@ +270,5 @@
> +    let canvasY = Math.round(this._canvasPosition.y * devicePixelRatio);
> +
> +    this.ctx.save();
> +    this.ctx.translate(offset - canvasX, offset - canvasY);
> +    this.ctx.setLineDash(FLEXBOX_LINES_PROPERTIES.alignItems.lineDash);

FLEXBOX_LINES_PROPERTIES.alignItems doesn't exist. So, the patch doesn't actually work.

@@ +283,5 @@
> +    for (let flexLine of flexLines) {
> +      let { crossStart, crossSize } = flexLine;
> +
> +      switch (alignItemsType) {
> +        case "flex-start":

We need to handle all the align items type. See https://developer.mozilla.org/en-US/docs/Web/CSS/align-items.

@@ +313,5 @@
> +        case "center":
> +        case "normal":
> +          if (isColumn) {
> +            drawRect(this.ctx, crossStart + crossSize / 2, 0,
> +            crossStart + crossSize / 2, bounds.height, this.currentMatrix);

Indent this

@@ +317,5 @@
> +            crossStart + crossSize / 2, bounds.height, this.currentMatrix);
> +            this.ctx.stroke();
> +          } else {
> +            drawRect(this.ctx, 0, crossStart + crossSize / 2, bounds.width,
> +            crossStart + crossSize / 2, this.currentMatrix);

Indent this
Attachment #8949231 - Flags: review?(gl)
Attached patch 1432035.patch (obsolete) — Splinter Review
Attachment #8949633 - Flags: review?(gl)
Attachment #8949231 - Attachment is obsolete: true
Comment on attachment 8949633 [details] [diff] [review]
1432035.patch

Looks like this patch is for the wrong bug. Clearing the review
Attachment #8949633 - Flags: review?(gl)
Attachment #8949633 - Attachment is obsolete: true
Attachment #8949231 - Attachment is obsolete: false
Attached patch 1432035.patchSplinter Review
Attachment #8949231 - Attachment is obsolete: true
Attachment #8961879 - Flags: review?(gl)
Attachment #8961879 - Flags: review?(gl) → review+
Pushed by gabriel.luong@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/e2a2139264a3
Visualize the align-items in the flexbox highlighter. r=gl
https://hg.mozilla.org/mozilla-central/rev/e2a2139264a3
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 61
Product: Firefox → DevTools
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: