Closed Bug 861332 Opened 8 years ago Closed 8 years ago

OSX: window resizer is not there anymore

Categories

(Core :: Graphics: Layers, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla24
Tracking Status
firefox20 --- affected
firefox21 --- affected
firefox22 --- affected
firefox23 --- affected

People

(Reporter: mehmet.sahin, Assigned: mstange)

References

Details

(Keywords: regression)

Attachments

(2 files)

Attached image screenshot.png
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:23.0) Gecko/20130412 Firefox/23.0
Build ID: 20130412030828

Steps to reproduce:

1.) Run Firefox Stable or Nightly on OSX 10.6.8
2.) Take a look at the bottom right of the window


Actual results:

The window resizer is not there anymore. (Please see the attache screenshot).


Expected results:

There have to be a window resizer.
Component: Untriaged → Theme
Cc'ing one of our local Cocoa hackers.

Hey Josiah, any idea what might be happening here?
Flags: needinfo?(josiah)
Interesting. The square is actually shown, and it functions properly, but the image seems to be missing. AFAIK, we draw the scrollbars ourselves, so for some reason the image is not getting added anymore.

At the moment I am not sure why, I will do some investigation. The white square is exactly like what happens on Lion and Mountain Lion machines, so I am wondering if the icon got removed somehow because it think we are running on Snow Leopard.
Flags: needinfo?(josiah)
Status: UNCONFIRMED → NEW
Ever confirmed: true
This was broken by bug 829886 and some, as far as I can tell, misguided calls to GetClientBounds in gfx.
Blocks: 829886
Component: Theme → Graphics: Layers
Keywords: regression
Product: Firefox → Core
Version: 23 Branch → Trunk
I think this affects all versions from 20 to 23.
Attached patch v1Splinter Review
The bug happens because DrawWindowOverlay (where the resizer is drawn) uses the rect that's passed to DrawWindowOverlay in order to arrive at the resizer draw position. However, this rect comes from directly GetClientBounds, and for root widgets that's in screen coordinates.

I think the correct fix is to simply ignore rect.x/.y or set it to 0. That's is what most of the callers of GetClientBounds in gfx/layers/ do. I've audited all of them and fixed those that didn't ignore rect.x/.y.
Assignee: nobody → mstange
Status: NEW → ASSIGNED
Attachment #746897 - Flags: review?(bas)
Comment on attachment 746897 [details] [diff] [review]
v1

Hey Matt, do you want to review this patch?
Attachment #746897 - Flags: review?(matt.woodrow)
Could we just instead add a new nsIWidget function that returns the client bounds relative to the widget itself (GetClientBoundsRelativeToSelf or similar), or maybe one that returns the client size.

It looks ugly to have to 0 out the x/y values for all callers, and I'm worried that we'll add more callers in the future that forget to do this.
Attachment #746897 - Flags: review?(matt.woodrow)
Attachment #746897 - Flags: review?(bas)
Attachment #746897 - Flags: review+
https://hg.mozilla.org/mozilla-central/rev/b7098b685633
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla24
You need to log in before you can comment on or make changes to this bug.