Commit graph

408 commits

Author SHA1 Message Date
Hiroyuki Ikezoe
b976eb1152 Bug 1839198 - Move mIsPIPWindow into nsBaseWidget. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D181417
2023-06-27 21:20:08 +00:00
Natalia Csoregi
d39daca2ad Backed out 2 changesets (bug 1839198) for causing failures on browser_disableSwipeGestures.js. CLOSED TREE
Backed out changeset 7571cac8dc05 (bug 1839198)
Backed out changeset 7a7eaa3f754d (bug 1839198)
2023-06-23 03:31:03 +03:00
Hiroyuki Ikezoe
c2df274d5e Bug 1839198 - Move mIsPIPWindow into nsBaseWidget. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D181417
2023-06-22 20:53:18 +00:00
Emilio Cobos Álvarez
1937b308ec Bug 1834042 - Make nsWindow::ConstrainPosition account for decorations. r=stransky
Differential Revision: https://phabricator.services.mozilla.com/D178545
2023-05-23 10:30:05 +00:00
Butkovits Atila
2fc1fdfb88 Backed out changeset ff1720f8fc34 (bug 1834042) for causing Android bustages at nsWindow.h. CLOSED TREE 2023-05-23 00:54:10 +03:00
Emilio Cobos Álvarez
56a0e2aa64 Bug 1834042 - Make nsWindow::ConstrainPosition account for decorations. r=stransky
Differential Revision: https://phabricator.services.mozilla.com/D178545
2023-05-22 20:36:27 +00:00
Ray Kraesig
bde5814318 Bug 1832168 - [3/3] Remove nsIWidget::SetNativeData() r=emilio,geckoview-reviewers,m_kato
Remove `nsIWidget::SetNativeData()` and all implementations thereof, as
none of them have had any functionality or use since bug 1338172.

No functional changes.

Differential Revision: https://phabricator.services.mozilla.com/D177568
2023-05-11 01:13:06 +00:00
filips
20d7c9c0d8 Bug 1747722 - Allow changing window class hints using attributes. r=emilio,stransky
This patch adds two new attributes to the window's `html` element, `windowclass` and `windowname`, to allow directly controlling the window's class hints on Xorg/Wayland (`res_class` and `res_name`) from the chrome/JS code. When they are set, values are used as class hints for their window. When they are not set, the current behavior of determining `res_class` and `res_name` (using `gdk_get_program_class` for `res_class` and parsing `windowtype` for `res_name`) is preserved.

Changes in `widget/nsIWidget.h` and `widget/nsBaseWidget.h` are only interface changes so that `setWindowClass` can accept three attributes. Although this patch does not affect Windows, `widget/windows/nsWindow.h` and `widget/windows/nsWindow.cpp` have been updated to comply with the new interface. `xpfe/appshell/AppWindow.cpp` has been updated to get the additional attributes and call `setWindowClass` with them. The main changes are in `widget/gtk/nsWindow.h` and `widget/gtk/nsWindow.cpp`.

Differential Revision: https://phabricator.services.mozilla.com/D169720
2023-03-02 16:22:05 +00:00
Makoto Kato
a81830ccdb Bug 1812938 - Part 1. GetWidgetScreen returns Screen instead of nsIScreen. r=emilio,geckoview-reviewers,owlish
`nsIWidget` isn't scriptable, so it is unnecessary to return `nsIScreen` for
`GetWidgetScreen`.

Differential Revision: https://phabricator.services.mozilla.com/D168029
2023-02-06 04:51:26 +00:00
Emilio Cobos Álvarez
e7fa71f013 Bug 1813303 - Clean up nsIWidget::SetNonClientMargins usage. r=spohl
Make it take a const reference and simplify callers.

No behavior change, but noticed while looking through this code.

Differential Revision: https://phabricator.services.mozilla.com/D168199
2023-01-28 21:43:47 +00:00
Emilio Cobos Álvarez
95520cabbd Bug 1809430 - Clean up ClientToWindowRect. r=cmartin,mstange
Make it return a margin from client area to window area, and add an
explicit function to get the size difference.

No behavior change.

Depends on D166428

Differential Revision: https://phabricator.services.mozilla.com/D166431
2023-01-26 11:19:16 +00:00
Emilio Cobos Álvarez
9e530f224a Bug 1811834 - Clean up nsWidgetInitData. r=cmartin,geckoview-reviewers,calu
Move it to the mozilla::widget namespace.

Use enum classes for transparency, popup type, popup level, etc.

Mostly automated with sed, but there were a few manual changes required
as well in windows code because they relied on Atomic<TransparencyMode>
working (which now doesn't because TransparencyMode is 1 byte instead of
4 bytes).

Differential Revision: https://phabricator.services.mozilla.com/D167537
2023-01-23 23:58:41 +00:00
Sandor Molnar
e16941d56b Backed out changeset 0f2913c81558 (bug 1809430) for causing multiple failures. 2023-01-17 03:13:06 +02:00
Emilio Cobos Álvarez
5077bb750f Bug 1809430 - Clean up ClientToWindowRect. r=cmartin,mstange
Make it return a margin from client area to window area, and add an
explicit function to get the size difference.

No behavior change.

Depends on D166428

Differential Revision: https://phabricator.services.mozilla.com/D166431
2023-01-16 23:35:34 +00:00
Emilio Cobos Álvarez
56be5080d2 Bug 1807687 - Simplify Windows keyboard indicator setting handling. r=NeilDeakin
The only thing that can explain this is the WM_UPDATEUISTATE state
getting out of sync in a way that we think we need to unconditionally
show focus indicators for a window.

I tried to first make this less error prone (see patch above) but
digging more into these messages, I'm pretty sure we just don't need all
this code. See:

 * https://devblogs.microsoft.com/oldnewthing/20130516-00/?p=4343
 * https://devblogs.microsoft.com/oldnewthing/20130517-00/?p=4323

In particular, this is intended to be a windows feature to not show
keyboard indicators on dialogs until you use the keyboard. But that's
how Gecko dialogs behave already due to how :focus-visible behaves as
per:

  https://searchfox.org/mozilla-central/rev/43ee5e789b079e94837a21336e9ce2420658fd19/toolkit/components/prompts/src/CommonDialog.jsm#319

I haven't been able to repro this state, but sounds believable that it
could happen after opening a native dialog or so on?

The purpose of this code is to implement the 'Underline access keys' in
the Keyboard Accessibility control panel of windows.

There's an easier way of tracking this, via the SPI_GETKEYBOARDCUES SPI,
documented in:

  https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-systemparametersinfoa

Hook that into LookAndFeel rather than using custom IPC and so on.

Differential Revision: https://phabricator.services.mozilla.com/D165578
2023-01-09 18:19:03 +00:00
Emilio Cobos Álvarez
3ec96f644b Bug 1807482 - Re-introduce a reduced version of mouse grabs for desktop environments that need it. r=stransky
Some X servers move focus along with the mouse. They do not do that if
the pointer is grabbed tho.

Since we want to rollup popups on focus-out events, and not grabbing the
pointer causes the main window to lose focus, let's try to grab the
pointer again.

This reintroduces similar code to the one removed in bug 1798131, but
with a couple critical differences:

 * It's simpler.

 * We use less-deprecated APIs, though we can't use GdkSeat because we
   still support Gtk < 3.20 in theory.

 * We don't capture enter/leave-notify events in the grab mask. This
   doesn't seem to be needed, and prevents the spurious
   enter/leave-notify events that caused me to remove the pointer grabs
   to begin with.

I tweaked test_panel_mouse_coords.xhtml so that the pointer ends up
inside the panel input region, otherwise the motion event goes to the
actual window and the test fails. It's kind of a bug that we dispatch
mousemove events for that region anyways, but...

Add a pref for this behavior, and some related logging, since it may
make it easier to debug stuff in the future, and there are some WMs that
don't support querying their name.

Differential Revision: https://phabricator.services.mozilla.com/D165735
2023-01-04 14:02:47 +00:00
Csoregi Natalia
c98f290faa Backed out 2 changesets (bug 1807482) for causing failures on browser_bookmark_popup.js. CLOSED TREE
Backed out changeset 49b134c7ce20 (bug 1807482)
Backed out changeset e33eb418926a (bug 1807482)
2023-01-04 04:54:41 +02:00
Emilio Cobos Álvarez
94e4a8de6f Bug 1807482 - Re-introduce a reduced version of mouse grabs. r=stransky
Some X servers move focus along with the mouse. They do not do that if
the pointer is grabbed tho.

Since we want to rollup popups on focus-out events, and not grabbing the
pointer causes the main window to lose focus, let's try to grab the
pointer again.

This reintroduces similar code to the one removed in bug 1798131, but
with a couple critical differences:

 * It's simpler.

 * We use less-deprecated APIs, though we can't use GdkSeat because we
   still support Gtk < 3.20 in theory.

 * We don't capture enter/leave-notify events in the grab mask. This
   doesn't seem to be needed, and prevents the spurious
   enter/leave-notify events that caused me to remove the pointer grabs
   to begin with.

For now I reintroduced the grab on X11 whole-sale.

If we see back the intermittent failures from bug 1607713 we might want
to detect the environment in a more fine-grained fashion as suggested on
the code comment.

I tweaked test_panel_mouse_coords.xhtml so that the pointer ends up
inside the panel input region, otherwise the motion event goes to the
actual window and the test fails. It's kind of a bug that we dispatch
mousemove events for that region anyways, but...

Also, add a pref for this behavior, and some related logging, since it
may make it easier to debug stuff in the future.

Differential Revision: https://phabricator.services.mozilla.com/D165735
2023-01-03 21:49:16 +00:00
Emilio Cobos Álvarez
f62fac0678 Bug 1807482 - Remove gRollupListener. r=stransky
This is just preliminary clean-up.

Differential Revision: https://phabricator.services.mozilla.com/D165734
2023-01-03 13:39:43 +00:00
Olli Pettay
5d21de32ac Bug 1807812 - Remove WidgetEventTime::mTime, r=masayuki,geckoview-reviewers,m_kato
HTMLSelectEventListener changes are needed, since currently that code works somewhat by accident given that
mTime often contains totally bogus values, like PR_IntervalNow(). Those changes then reveal issues also in
browser_editAddressDialog.js.

Differential Revision: https://phabricator.services.mozilla.com/D165618
2023-01-02 12:31:40 +00:00
Hiroyuki Ikezoe
3a5650ace5 Bug 1794070 - Make a pan start event wait for the browser gesture code response. r=botond,dlrobertson
So that APZ can wait to handle the event to do overscrolling until the browser
responds that the event wasn't used for gestures.

Differential Revision: https://phabricator.services.mozilla.com/D160438
2022-11-22 06:52:53 +00:00
Hiroyuki Ikezoe
f7ce055162 Bug 1794070 - Refer mRequiresContentResponseIfCannotScrollHorizontallyInStartDirection flag instead of calling SwipeTrackker::CanTriggerSwipe(). r=botond
And rename mRequiresContentResponseIfCannotScrollHorizontallyInStartDirection to
mMayTriggerSwipe.

So basically once after the flag is set, we should use it.

Differential Revision: https://phabricator.services.mozilla.com/D160436
2022-11-22 06:52:52 +00:00
Butkovits Atila
887a77ba5f Backed out 13 changesets (bug 1794070) for causing failures at browser_test_swipe_gesture.js. CLOSED TREE
Backed out changeset afe487b23e1c (bug 1794070)
Backed out changeset b119052f690d (bug 1794070)
Backed out changeset 733188f6b7ca (bug 1794070)
Backed out changeset 53273c86140a (bug 1794070)
Backed out changeset e2e39e61efbe (bug 1794070)
Backed out changeset 93b240feb781 (bug 1794070)
Backed out changeset 78aea5c32e14 (bug 1794070)
Backed out changeset 158008a6363b (bug 1794070)
Backed out changeset 3c3e76c8bf49 (bug 1794070)
Backed out changeset 39beb7abc321 (bug 1794070)
Backed out changeset 0ded01fbbd9e (bug 1794070)
Backed out changeset cf4552e5e11b (bug 1794070)
Backed out changeset 317ee240609d (bug 1794070)
2022-11-21 13:41:34 +02:00
Hiroyuki Ikezoe
024f31065c Bug 1794070 - Make a pan start event wait for the browser gesture code response. r=botond
So that APZ can wait to handle the event to do overscrolling until the browser
responds that the event wasn't used for gestures.

Differential Revision: https://phabricator.services.mozilla.com/D160438
2022-11-21 03:10:08 +00:00
Hiroyuki Ikezoe
5b39846aeb Bug 1794070 - Refer mRequiresContentResponseIfCannotScrollHorizontallyInStartDirection flag instead of calling SwipeTrackker::CanTriggerSwipe(). r=botond
And rename mRequiresContentResponseIfCannotScrollHorizontallyInStartDirection to
mMayTriggerSwipe.

So basically once after the flag is set, we should use it.

Differential Revision: https://phabricator.services.mozilla.com/D160436
2022-11-21 03:10:07 +00:00
Ray Kraesig
ec80afc7a4 Bug 1776895 - [5/6] Save and restore original relative position r=cmartin,handyman
When entering fullscreen and saving the original position of a window,
also save the position to which it was moved.

When leaving fullscreen, keep the window on the same screen. Restore its
_screen-relative_ position, rather than its absolute position.

Differential Revision: https://phabricator.services.mozilla.com/D153410
2022-09-20 16:22:57 +00:00
Ray Kraesig
360f7f624e Bug 1776895 - [3/6] Cleanup: specialize further to desktop pixels r=cmartin
Use desktop pixels everywhere:
 - Store the old window position as a `DesktopRect`.
 - Since `GetRectDisplayPix` is infallible, use the convenience getter
   that hands us a `DesktopIntRect`.
 - Add a helper function that wraps `Resize()` and takes any `Rect`
   which uses `DesktopPixel`s.

No functional changes.

Differential Revision: https://phabricator.services.mozilla.com/D153409
2022-09-20 16:22:56 +00:00
Ray Kraesig
44d02f76a7 Bug 1776895 - [1/6] Cleanup: use UniquePtr rather than manual allocation r=cmartin
No functional changes.

Differential Revision: https://phabricator.services.mozilla.com/D153407
2022-09-20 16:22:56 +00:00
Emilio Cobos Álvarez
fb6380190c Bug 1786525 - Don't update untransformed anchor rect when moved by move-to-rect. r=stransky
Otherwise, it changes the move-to-rect inputs, which can change the
output as well, making us move the anchor all the way to the right.

You could, I guess, consider this a mutter bug of sorts, because it
feels weird that you pass it an anchor that has been a `move-to-rect`
output and you get another rect as an output.

But also, it's kinda silly that we're doing that to begin with, so avoid
it by telling the popup frame whether it's been positioned / moved by
move-to-rect (and keeping the anchor in that case).

The reason this works on my setup without "Large text" is just dumb luck
(the front-end computes a max-height for the panel that is small enough
to fit on the screen).

Differential Revision: https://phabricator.services.mozilla.com/D155406
2022-08-30 09:30:27 +00:00
Sandor Molnar
9d7f9853a2 Backed out changeset bb1d2a4a5570 (bug 1786525) for causing build bustages in xpfe/appshell/AppWindow.cpp CLOSED TREE 2022-08-30 01:26:00 +03:00
Emilio Cobos Álvarez
cf74fba975 Bug 1786525 - Don't update untransformed anchor rect when moved by move-to-rect. r=stransky
Otherwise, it changes the move-to-rect inputs, which can change the
output as well, making us move the anchor all the way to the right.

You could, I guess, consider this a mutter bug of sorts, because it
feels weird that you pass it an anchor that has been a `move-to-rect`
output and you get another rect as an output.

But also, it's kinda silly that we're doing that to begin with, so avoid
it by telling the popup frame whether it's been positioned / moved by
move-to-rect (and keeping the anchor in that case).

The reason this works on my setup without "Large text" is just dumb luck
(the front-end computes a max-height for the panel that is small enough
to fit on the screen).

Differential Revision: https://phabricator.services.mozilla.com/D155406
2022-08-29 21:47:34 +00:00
Ray Kraesig
d37d1556d3 Bug 1786226 - Revert all patches for regressing bug 1776895 r=cmartin
This reverts the following commits:
- 21f1ada7ee6ad5839fc0d9bc98e1ff2d558ef6e7
- cde5393917c483a3516f4c883af02834ddbf11d8
- 3d2dc8de0e7147d0d991c16c29ad9a8678a25635
- 4b17fb88efc581522c0edf0740da4c54c539d39a
- 7b0893449764054af7795df66c0c2e83a370d620
- bcc0fa996f5fd7cc677ca2a5e97329dcd6b74a04
- 9547ab55535d9713c95bc3344d1cc1357520ba92

Differential Revision: https://phabricator.services.mozilla.com/D155237
2022-08-22 18:30:03 +00:00
Ray Kraesig
c4d109da63 Bug 1776895 - [5/6] Save and restore original relative position r=cmartin
When entering fullscreen and saving the original position of a window,
also save the original position of its screen.

When leaving fullscreen, keep the window on the same screen. Restore its
_screen-relative_ position, rather than its absolute position.

Differential Revision: https://phabricator.services.mozilla.com/D153410
2022-08-17 18:51:32 +00:00
Ray Kraesig
3a0072feae Bug 1776895 - [3/6] Cleanup: specialize further to desktop pixels r=cmartin
Use desktop pixels everywhere:
 - Store the old window position as a `DesktopRect`.
 - Since `GetRectDisplayPix` is infallible, use the convenience getter
   that hands us a `DesktopIntRect`.
 - Add a helper function that wraps `Resize()` and takes any `Rect`
   which uses `DesktopPixel`s.

No functional changes.

Differential Revision: https://phabricator.services.mozilla.com/D153409
2022-08-17 18:51:31 +00:00
Ray Kraesig
4592637ee3 Bug 1776895 - [1/6] Cleanup: use UniquePtr rather than manual allocation r=cmartin
No functional changes.

Differential Revision: https://phabricator.services.mozilla.com/D153407
2022-08-17 18:51:30 +00:00
Sandor Molnar
11e0476cea Backed out 5 changesets (bug 1776895) for causing mochitest failures in widget/tests/test_bug522217.xhtml CLOSED TREE
Backed out changeset cda5c3ab282f (bug 1776895)
Backed out changeset 8a5b0ed7ccb6 (bug 1776895)
Backed out changeset 871f199ecca1 (bug 1776895)
Backed out changeset b0e8b9d7d2a4 (bug 1776895)
Backed out changeset 9a85cc74c6cc (bug 1776895)
2022-08-10 02:38:18 +03:00
Ray Kraesig
6dd316e070 Bug 1776895 - [4/5] Save and restore original relative position r=cmartin
When entering fullscreen and saving the original position of a window,
also save the original position of its screen.

When leaving fullscreen, keep the window on the same screen. Restore its
_screen-relative_ position, rather than its absolute position.

Differential Revision: https://phabricator.services.mozilla.com/D153410
2022-08-09 20:18:40 +00:00
Ray Kraesig
8182e508f5 Bug 1776895 - [3/5] Cleanup: specialize further to desktop pixels r=cmartin
Use desktop pixels everywhere:
 - Store the old window position as a `DesktopRect`.
 - Since `GetRectDisplayPix` is infallible, use the convenience getter
   that hands us a `DesktopIntRect`.
 - Add a helper function that wraps `Resize()` and takes any `Rect`
   which uses `DesktopPixel`s.

No functional changes.

Differential Revision: https://phabricator.services.mozilla.com/D153409
2022-08-09 20:18:40 +00:00
Ray Kraesig
7bb3ab29c0 Bug 1776895 - [1/5] Cleanup: use UniquePtr rather than manual allocation r=cmartin
No functional changes.

Differential Revision: https://phabricator.services.mozilla.com/D153407
2022-08-09 20:18:39 +00:00
Hiroyuki Ikezoe
4907d4f03c Bug 1742797 - Add a new IPC call to clear animation resources on WebRender, r=sotaro.
Differential Revision: https://phabricator.services.mozilla.com/D151481
2022-07-19 19:56:21 +00:00
Butkovits Atila
398eded3f1 Backed out 4 changesets (bug 1742797, bug 1748808) for causing crashes at mozilla::layers::APZCTreeManagerParent::RecvUpdateZoomConstraints.
Backed out changeset 23f2a369a5a7 (bug 1748808)
Backed out changeset 5b0edd03f698 (bug 1742797)
Backed out changeset 8ed69c2c1d49 (bug 1742797)
Backed out changeset 18e11e7ea9d0 (bug 1742797)
2022-07-19 08:12:04 +03:00
Hiroyuki Ikezoe
30a66f3945 Bug 1742797 - Add a new IPC call to clear animation resources on WebRender, r=sotaro.
Differential Revision: https://phabricator.services.mozilla.com/D151481
2022-07-18 18:01:52 +00:00
Csoregi Natalia
c97011ab89 Backed out 4 changesets (bug 1742797) for causing failures on /browser_ext_getViews.js. CLOSED TREE
Backed out changeset c48ff146a33d (bug 1742797)
Backed out changeset a692ca1d8401 (bug 1742797)
Backed out changeset cfc1f440fb6d (bug 1742797)
Backed out changeset 88f60761e884 (bug 1742797)
2022-07-13 01:02:54 +03:00
Hiroyuki Ikezoe
a576a80a90 Bug 1742797 - Add a new IPC call to clear animation resources on WebRender, r=sotaro.
Differential Revision: https://phabricator.services.mozilla.com/D151481
2022-07-12 14:46:53 +00:00
Emilio Cobos Álvarez
94ea7b0820 Bug 1772692 - AnimationInfo::EnumerateGenerationOnFrame shouldn't need to create a window renderer. r=hiro
There's no need to lazily create a renderer here. We already avoided
this in content processes, but there's no need to do so in the parent
process either.

This shouldn't change behavior, but might help with bug 1772691, and
generally seems cleaner.

Differential Revision: https://phabricator.services.mozilla.com/D148337
2022-06-05 23:20:45 +00:00
Emilio Cobos Álvarez
b44d1c0376 Bug 1772432 - Clean up nsWidgetInitData. r=stransky
Use inline initializers, remove dead code, use consistent naming.

No behavior change.

Differential Revision: https://phabricator.services.mozilla.com/D148209
2022-06-03 09:41:39 +00:00
Karl Tomlinson
b0862b31cc Bug 1771278 - remove unused nsIRollupListener::NotifyGeometryChange() r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D147408
2022-05-26 21:04:26 +00:00
Chris Martin
80881746de Bug 1763023 - Push nsBaseWidget::mSizeMode into child classes r=handyman
This member is no longer used on Windows, and having it in the
base class doesn't provide a real abstraction anyway since
the child classes will break if anything about it is changed.

Differential Revision: https://phabricator.services.mozilla.com/D145132
2022-05-02 14:06:17 +00:00
sotaro
0054e1bdb2 Bug 1736479 - Make gfx SanityTest.jsm work again r=gfx-reviewers,bradwerth
If we want to re-enable SanityTest.jsm test, we need to disable native compositor(DirectComposition) on the testing window, since taking snapshot of native compositor is very slow on Windows. Then CompositorOptions could be used to notice to disable native compositor(DirectComposition).
To notice it from SanityTest.jsm to gecko, nsIAppWindow::needFastSnaphot() is used.

Differential Revision: https://phabricator.services.mozilla.com/D130824
2022-04-20 01:08:52 +00:00
Timothy Nikkel
4cac1c7814 Bug 1763121. nsIDOMWindowUtils::sendNativeTouchpadPan should use an observer to notify when the event has been sent to the destination widget. r=hiro
Otherwise we can return without the widget even seeing the event. This is how other test functions are implemented.

We need this to make the test in bug 1757928 pass.

Differential Revision: https://phabricator.services.mozilla.com/D142943
2022-04-05 22:53:35 +00:00