summaryrefslogtreecommitdiff
path: root/D110204-fscreen.patch
diff options
context:
space:
mode:
Diffstat (limited to 'D110204-fscreen.patch')
-rw-r--r--D110204-fscreen.patch82
1 files changed, 82 insertions, 0 deletions
diff --git a/D110204-fscreen.patch b/D110204-fscreen.patch
new file mode 100644
index 0000000..c25f992
--- /dev/null
+++ b/D110204-fscreen.patch
@@ -0,0 +1,82 @@
+diff -up firefox-102.2.0/widget/gtk/nsWindow.cpp.D110204-fscreen.diff firefox-102.2.0/widget/gtk/nsWindow.cpp
+--- firefox-102.2.0/widget/gtk/nsWindow.cpp.D110204-fscreen.diff 2022-08-18 21:54:09.000000000 +0200
++++ firefox-102.2.0/widget/gtk/nsWindow.cpp 2022-09-02 15:55:18.023843940 +0200
+@@ -96,6 +96,7 @@
+ #include "ScreenHelperGTK.h"
+ #include "SystemTimeConverter.h"
+ #include "WidgetUtilsGtk.h"
++#include "nsIBrowserHandler.h"
+
+ #ifdef ACCESSIBILITY
+ # include "mozilla/a11y/LocalAccessible.h"
+@@ -169,7 +170,8 @@ const gint kEvents = GDK_TOUCHPAD_GESTUR
+ GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
+ GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
+ GDK_SMOOTH_SCROLL_MASK | GDK_TOUCH_MASK | GDK_SCROLL_MASK |
+- GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK;
++ GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK |
++ GDK_FOCUS_CHANGE_MASK;
+
+ /* utility functions */
+ static bool is_mouse_in_window(GdkWindow* aWindow, gdouble aMouseX,
+@@ -408,7 +410,8 @@ nsWindow::nsWindow()
+ mMovedAfterMoveToRect(false),
+ mResizedAfterMoveToRect(false),
+ mConfiguredClearColor(false),
+- mGotNonBlankPaint(false) {
++ mGotNonBlankPaint(false),
++ mPendingFullscreen(false) {
+ mWindowType = eWindowType_child;
+ mSizeConstraints.mMaxSize = GetSafeWindowSize(mSizeConstraints.mMaxSize);
+
+@@ -4814,6 +4817,19 @@ void nsWindow::OnWindowStateEvent(GtkWid
+ ClearTransparencyBitmap();
+ }
+ }
++
++ // Hack to ensure window switched to fullscreen - avoid to fail when starting
++ // in kiosk mode
++ if (mPendingFullscreen &&
++ !(aEvent->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)) {
++ LOG(
++ " Window should be fullscreen, but it's not, retrying set to "
++ "fullscreen.\n");
++ MakeFullScreen(true);
++ } else {
++ LOG(" Window successfully switched to fullscreen, happy now\n");
++ mPendingFullscreen = false;
++ }
+ }
+
+ void nsWindow::OnDPIChanged() {
+@@ -7042,6 +7058,19 @@ nsresult nsWindow::MakeFullScreen(bool a
+ }
+ }
+
++ // if in kiosk, ensure the fullscreen is called
++ nsCOMPtr<nsIBrowserHandler> browserHandler =
++ do_GetService("@mozilla.org/browser/clh;1");
++ if (browserHandler) {
++ bool isKiosk;
++ browserHandler->GetKiosk(&isKiosk);
++ if (isKiosk) {
++ LOG(" is kiosk, ensure the window switch to fullscreen\n");
++ mPendingFullscreen = true;
++ }
++ } else {
++ LOG(" Cannot find the browserHandler service.\n");
++ }
+ gtk_window_fullscreen(GTK_WINDOW(mShell));
+ } else {
+ mSizeMode = mLastSizeMode;
+diff -up firefox-102.2.0/widget/gtk/nsWindow.h.D110204-fscreen.diff firefox-102.2.0/widget/gtk/nsWindow.h
+--- firefox-102.2.0/widget/gtk/nsWindow.h.D110204-fscreen.diff 2022-08-18 21:53:52.000000000 +0200
++++ firefox-102.2.0/widget/gtk/nsWindow.h 2022-09-02 08:17:07.606010905 +0200
+@@ -712,6 +712,7 @@ class nsWindow final : public nsBaseWidg
+ * move-to-rect callback we set mMovedAfterMoveToRect/mResizedAfterMoveToRect.
+ */
+ bool mWaitingForMoveToRectCallback : 1;
++ bool mPendingFullscreen : 1;
+ bool mMovedAfterMoveToRect : 1;
+ bool mResizedAfterMoveToRect : 1;
+