Commit Graph

494 Commits

Author SHA1 Message Date
Martin Stransky
d36f1c9fec Bug 1434202 - [Wayland] Set popups as app paintable on Wayland as we paint them ourself there, r=jhorak
MozReview-Commit-ID: 9kpovSmmZss
2018-01-30 10:36:24 +01:00
Martin Stransky
3b7655b0cf Bug 1433869 - Disable CSD titlebar mode on untested/unknown systems for Release/Beta, r=jhorak
MozReview-Commit-ID: JRF0BAbtkRN
2018-01-29 11:35:31 +01:00
Martin Stransky
3541e9c0c2 Bug 1432385 - Use window manager borders on LXQt, r=jhorak
MozReview-Commit-ID: JkyBMBovCIG
2018-01-25 15:52:06 +01:00
Martin Stransky
dd8a058110 Bug 1432414 - Use gtk_get_current_event_time() instead of gdk_x11_display_get_user_time() on Wayland, r=jhorak
Emulate what gtk+/gtkwindow.c gtk_window_present_with_time() does - use gdk_x11_display_get_user_time() on X11
and gtk_get_current_event_time() on Wayland to get event timestamp.

MozReview-Commit-ID: GEU6ZrQxq6v
2018-01-23 11:01:11 +01:00
Martin Stransky
bc60ef4bf3 Bug 1431052 - Don't crash when mContainer is missing (GdkWindow is hidden for instance), r=jhorak
Original patch author is Takuro Ashie.

MozReview-Commit-ID: 9nJmELBxSTA
2018-01-18 15:01:30 +01:00
Martin Stransky
31d614032a Bug 1420818 - For rendering to titlebar make CSD window decorations mode default, enable WM decorations on Elementary OS, r=jhorak
MozReview-Commit-ID: FhF53Z34JS6
2018-01-12 08:41:00 +01:00
Martin Stransky
9eff0f7961 Bug 1417933 - enable CSD titlebar rendering mode on Unity desktop, r=jhorak
MozReview-Commit-ID: AWKJWnsrb7i
2018-01-09 11:31:40 +01:00
Martin Stransky
ac34219293 Bug 1430018 - dlsym gdk_wayland_* routines as those are available at Gtk+ > 3.8, r=jhorak
MozReview-Commit-ID: EUgmc9QNeoI
2018-01-12 13:22:48 +01:00
Martin Stransky
175c621c82 Bug 1430018 - Don't use gdk_x11_screen_supports_net_wm_hint(_NET_WM_STATE_FULLSCREEN) on Wayland, r=jhorak
MozReview-Commit-ID: 9ZmQhkftunW
2018-01-12 10:47:36 +01:00
Martin Stransky
ff2515ca63 Bug 1430018 - Unify GtkCompositorWidgetInitData() call for X11 and Wayland, r=jhorak
MozReview-Commit-ID: 1sv3X59dMvZ
2018-01-12 10:43:31 +01:00
Sylvestre Ledru
aeb1902651 Bug 1278282 - Remove the 'MOZ_WIDGET_GTK == 2' defines r=karlt,lsalzman
MozReview-Commit-ID: 3v8D600g8St
2018-01-10 08:52:04 +01:00
Sylvestre Ledru
71230b028f Bug 1278282 - Replace #if (MOZ_WIDGET_GTK == 3) by #ifdef MOZ_WIDGET_GTK r=lsalzman
MozReview-Commit-ID: Bo0m7n078oh
2018-01-09 11:51:07 +01:00
Martin Stransky
2afba80dc1 Bug 1417890 - Install nsClipboard hook at nsWindow init, r=jhorak
MozReview-Commit-ID: GA3USkXtEhe
2017-12-18 13:39:00 +01:00
Martin Stransky
caf7b04b21 Bug 1425841 - Set up nsWindow configuration for Wayland rendering, r=jhorak
nsWindow needs configuration change when rendering on Wayland:

- Always draw to mContainer on Wayland as we can't create custom subsurface for
  mShell GdkWindow and listen events on mContainer then.
- GTK_WINDOW_TOPLEVEL can't be positioned on Wayland so create popup windows
  as GTK_WINDOW_POPUP to control window position on Wayland.
- Create ePopupTypeMenu GdkWindow as GDK_WINDOW_TYPE_HINT_UTILITY instead of
  GDK_WINDOW_TYPE_HINT_POPUP_MENU to create it as subsurface (Bug 1423598).
- Don't do pointer grab on Wayland (see Bug 1377084 for reference).

MozReview-Commit-ID: 6InzhTONtrD
2017-12-18 16:41:28 +01:00
Martin Stransky
f676593ef9 Bug 1425841 - Don't install popup_take_focus_filter on Wayland as it's X11 only, r=jhorak
MozReview-Commit-ID: DSzcmjwwrgw
2017-12-18 16:08:28 +01:00
Martin Stransky
bb0d6517c2 Bug 1425841 - Handle NS_NATIVE_DISPLAY/NS_NATIVE_SHAREABLE_WINDOW request on Wayland, r=jhorak
MozReview-Commit-ID: JijzpSuqVj3
2017-12-18 16:06:47 +01:00
Martin Stransky
f1e91bae1d Bug 1425841 - Implement GetWaylandDisplay() and GetWaylandSurface() needed by WindowSurfaceWayland, r=jhorak
MozReview-Commit-ID: Hlo1ceAIrL2
2017-12-18 15:53:50 +01:00
Martin Stransky
dadaa34c73 Bug 1425841 - don't call gdk_x11_window_get_xid() at LOG() on Wayland, r=jhorak
MozReview-Commit-ID: BzIzqE2I3Si
2017-12-18 15:50:57 +01:00
Martin Stransky
8558745bd8 Bug 1425842 - Rename X11CompositorWidget to GtkCompositorWidget and implement WindowSurfaceWayland support, r=jhorak
- Rename X11CompositorWidget to GtkCompositorWidget to handle both X11 and Wayland backends.
- Rename X11CompositorWidgetInitData to GtkCompositorWidgetInitData
- Implement Wayland support at WindowSurfaceProvider, WindowSurfaceProvider::CreateWindowSurface()
  is able to create WindowSurfaceWayland.
- Initialize Wayland surface provider at nsWindow::Create()

MozReview-Commit-ID: 1WvR9nWHa3L
2017-12-18 20:20:02 +01:00
Martin Stransky
d965c3bcc1 Bug 1426384 - Don't use CSD_SUPPORT_FULL on Wayland unless it's overriden by MOZ_GTK_TITLEBAR_DECORATION, r=jhorak
Wayland compositors do not support GDK_DECOR_BORDER so use CSD decorations exclusively.

MozReview-Commit-ID: 8gzDcw2AumI
2017-12-20 16:32:51 +01:00
Martin Stransky
435dc0ad2b Bug 1426384 - call gdk_window_set_decorations() on mShell GdkWindow only, r=jhorak
To have any effect we need to call gdk_window_set_decorations() on top-level GdkWindow only.
When rendering to mContainer the mGdkWindow belongs to mContainer so we need to get the window
from mShell explicitly.

MozReview-Commit-ID: KLKlVJbgg3
2017-12-20 16:31:13 +01:00
Martin Stransky
d3ceff7c1d Bug 1424974 - Honor mShell as top-level window, r=jhorak
When drawing to mContainer we still need to honor mShell as top-level window.
It means we have to listen property-notify-event there (as it's window specific),
get _NET_FRAME_EXTENTS here and use at nsWindow::SetWindowClass().

MozReview-Commit-ID: HYbNS0Lfyjy
2017-12-20 11:10:36 +01:00
Martin Stransky
6259a9dbaf Bug 1423869 - don't draw to mContainer when decorations are rendered by window manager, r=jhorak
Bug 1421974 introduced new mechanism to hide system titlebar by enabling client-side decorations for main Firefox window. It also causes a regression when the CSD window setup is enabled when system titlebar is hidden by window manager.

This patch fixes that and enables the CSD window setup only for case when it's actualy used.

MozReview-Commit-ID: AqfHR2bGr3K
2017-12-11 11:07:48 +01:00
Martin Stransky
05e3b58520 Bug 1423869 - force CSD_SUPPORT_NONE when XDG_CURRENT_DESKTOP is not set, r=jhorak
MozReview-Commit-ID: A4dz6ywrCsf
2017-12-11 11:05:27 +01:00
Bogdan Tara
9fa5e8c401 Backed out 1 changesets (bug 1423869)for causing frequent Linux chrome failure in toolkit/content/tests/chrome/test_chromemargin.xul r=backout on a CLOSED TREE
Backed out changeset 4960f30d91b2 (bug 1423869)
2017-12-07 19:58:24 +02:00
Martin Stransky
6dfca785d7 Bug 1423869 - don't draw to mContainer when decorations are rendered by window manager, r=jhorak
Bug 1421974 introduced new mechanism to hide system titlebar by enabling client-side decorations for main Firefox window. It also causes a regression when the CSD window setup is enabled when system titlebar is hidden by window manager.

This patch fixes that and enables the CSD window setup only for case when it's actualy used.

MozReview-Commit-ID: 6OzoPyxlhCp
2017-12-07 15:20:48 +01:00
Martin Stransky
38ca2e3af7 Bug 1421974 - use gtk_window_set_titlebar() to hide titlebar on WM where GDK_DECOR_BORDER does not work, r=jhorak
This patch is based on Karl Tomlinson's (:karlt) demo from Bug 1419456. We use gtk_window_set_titlebar()
to set invisible widget. The widget takes place of GtkHeaderBar which leads Gtk+ to render CSD shadows
and handle window resizing, it does not render any titlebar.

gtk_window_set_titlebar() works on unrealized windows only and mShell is already realized at time
of nsWindow::SetDrawsInTitlebar() call so we need to update recent GtkWidget setup.

In that case we create GdkWindow for mContainer (instead of mShell), create a temporary GtkWindow,
reparent mContainer (which owns mGdkWindow) to it, unrealize mShell and set up the titlebar
for mShell toplevel window.

As a workaround for Gtk+ Bug 791081 we also allocate some valid size for mShell before it's newly realized
with the updated titlebar.

MozReview-Commit-ID: A3KwRoOzoko
2017-12-01 15:22:48 +01:00
Martin Stransky
a1ce6f98c8 Bug 1421974 - refactor nsWindow::HideWindowChrome() to nsWindow::SetWindowDecoration() and share it with nsWindow::SetDrawsInTitlebar, r=jhorak
MozReview-Commit-ID: 3xEdMXq9JvJ
2017-12-01 15:09:11 +01:00
Martin Stransky
00d0b6cf49 Bug 1420820 - Added MOZ_GTK_TITLEBAR_DECORATION to override window manager detection and set window decoration type, r=jhorak
Enables override window manager default with those values:

MOZ_GTK_TITLEBAR_DECORATION=none - Firefox does not mess with decoration
MOZ_GTK_TITLEBAR_DECORATION=client - Firefox tries to disable titlebar rendering and draws shadows by client side decorations.
MOZ_GTK_TITLEBAR_DECORATION=system - Firefox tries to disable titlebar rendering and leave system (window manager) to draw window decorations.

MozReview-Commit-ID: G60QS3g1TD0
2017-12-04 15:19:00 +01:00
Martin Stransky
1adec56ac1 Bug 1419460 - search XDG_CURRENT_DESKTOP for desktop environment type substring, r=jhorak
We need apply various titlebar/border configuration which is based on active
window manager and desktop type. The XDG_CURRENT_DESKTOP shell variable contains active
desktop environment which we use at GetCSDSupportLevel().

Unfortunately Ubuntu adds "ubuntu:" prefix at XDG_CURRENT_DESKTOP so we can't do
plain string compare but rather search for DE substring at GetCSDSupportLevel().

MozReview-Commit-ID: GmAZ30p47eI
2017-11-23 14:01:35 +01:00
Martin Stransky
68a0dcae4d Bug 1419456 - Disable full CSD support for XFCE as it does not support GDK_DECOR_BORDER, r=jhorak
MozReview-Commit-ID: BFOgxJ3abrT
2017-11-21 20:03:21 +01:00
Martin Stransky
f399f5056b Bug 1418829 - Add MATE entry to GetCSDSupportLevel(), use GDK_DECOR_BORDER with CSD_SUPPORT_FULL only, r=jhorak
Adding MATE as FLAT as it does not support the shadow borders around the window.

GDK_DECOR_BORDER decoration mode means that the window manager renders borders around the window.
We want the border rendering for CSD_SUPPORT_FULL only which means the border looks like shadows. We don't wand WM to render solid/bold borders around main toplevel window.

MozReview-Commit-ID: BdwHi0LJRGC
2017-11-20 14:30:57 +01:00
Martin Stransky
7320200195 Bug 1418829 - nsLookAndFeel enables rendering to the titlebar for supported window managers only, r=jhorak
MozReview-Commit-ID: JvqQuZenkWy
2017-11-20 14:29:49 +01:00
Robin Grenet
001b80d26a Bug 1360278 - Add preference to trigger context menu on mouse up for GTK+ and macOS, r=mstange,smaug
MozReview-Commit-ID: Bg60bD8jIg6
2017-11-16 13:35:58 +01:00
Makoto Kato
b40cb8d735 bug 1414881 - Detect more resolution icons. r=karlt
I add some resolution icons for HiDPI by bug 1415014.  So we should detect
these resolution icons.  Also, Thunderbird has default256.png, so we should
support it, too.

MozReview-Commit-ID: 6BEgV0usnE2
2017-11-16 14:08:10 +09:00
Chris Peterson
1c79a65f02 Bug 1416164 - Replace NS_ABORT with MOZ_ASSERT_UNREACHABLE. r=froydnj
MozReview-Commit-ID: DRdYlOYqZpN
2017-10-24 23:52:56 -07:00
Martin Stransky
e09a7ac9c3 Bug 1414272 - Implement SetNonClientMargins() for Gtk+, r=jhorak
Original patch author is Andrew Comminos [:acomminos] <andrew@comminos.com>

MozReview-Commit-ID: Jnqz35iNsQb
2017-11-03 15:38:29 +01:00
Makoto Kato
624bb3703e Bug 1151753 - Set program class name when not using --class command line option. r=karlt
GTK bug: https://bugzilla.gnome.org/show_bug.cgi?id=747634

Before 3.16.3, GDK cannot override classname by --class command line option
when program uses gdk_set_program_class().  So if 3.16.3+, we should call
gdk_set_program_class() to set program class name of default.

MozReview-Commit-ID: KvNc3U6xHr7
2017-10-25 15:58:49 +09:00
Martin Stransky
2a6212269a Bug 1348310 - Use CLOCK_MONOTONIC as a base for nsWindow::GetEventTimeStamp() on Wayland, r=karlt
We assume CLOCK_MONOTONIC as timebase for events on Wayland and use that to translates GDK event times to gecko timestamps.

MozReview-Commit-ID: LWd2KWTQeha
2017-10-19 15:28:47 +02:00
Martin Stransky
372959b33e Bug 1411018 - Rename shellHasCSD to drawToContainer and mark our rendering widget by gtk_widget_set_app_paintable(), r=jhorak
Rename shellHasCSD to drawToContainer for better understanding and always mark our rendering widget by gtk_widget_set_app_paintable() to make sure Gtk+ does not draw default background for it.

MozReview-Commit-ID: 4mhxrG7C34i
2017-10-23 21:44:02 +02:00
Martin Stransky
6fb92b2740 Bug 1410894 - Load CSD config from nsLookAndFeel, r=jhorak
Make CSD setup and titlebar drawing available when users enable it by preference and also it's available on running system.

MozReview-Commit-ID: 4BLgzVWwX1R
2017-10-23 21:28:47 +02:00
Martin Stransky
79846d66fe Bug 1410894 - Add decoration drawing setup to nsWindow, r=jhorak
MozReview-Commit-ID: BHtqoOdfRpS
2017-10-27 11:19:08 +02:00
Botond Ballo
a5e55008f8 Bug 1400238 - Notify TabParent when the GTK client offset changes. r=karlt
MozReview-Commit-ID: 1TacAhl6c2M
2017-10-18 13:29:47 -04:00
Martin Stransky
0a15d66f13 Bug 1186967 - ignore double-click on WM without _NET_WM_MOVERESIZE support, r=jhorak
MozReview-Commit-ID: 2Vs6i5leero
2017-10-17 09:50:18 +02:00
Ryan Hunt
c14e188df9 Bug 1407001 - Don't reset compositors for composited changed callback when GPUProcessManager is null. r=lsalzman
MozReview-Commit-ID: 4E31bt3Rzkz
2017-10-09 12:49:53 -05:00
Nicholas Nethercote
7dbfdaf890 Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro.
(Path is actually r=froydnj.)

Bug 1400459 devirtualized nsIAtom so that it is no longer a subclass of
nsISupports. This means that nsAtom is now a better name for it than nsIAtom.

MozReview-Commit-ID: 91U22X2NydP
2017-10-03 09:05:19 +11:00
Nicholas Nethercote
721eb311ac Bug 1400148 - Don't use -1 to represent an unset nsCursor. r=karlt.
Because UBSan complains about casting -1:

> runtime error: load of value 4294967295, which is not a valid value for type 'nsCursor'
2017-09-15 14:34:37 +10:00
Nicholas Nethercote
be5f8887c1 Bug 1390428 (part 9) - Remove nsXPIDLCString. r=erahm.
This is straightforward, with only two notable things.

- `#include "nsXPIDLString.h" is replaced with `#include "nsString.h"`
  throughout, because all nsXPIDLString.h did was include nsString.h. The
  exception is for files which already include nsString.h, in which case the
  patch just removes the nsXPIDLString.h inclusion.

- The patch removes the |xpidl_string| gtest, but improves the |voided| test to
  cover some of its ground, e.g. testing Adopt(nullptr).
2017-08-17 15:29:03 +10:00
Ryan Hunt
bffd835f88 Bug 1377950 - Reset all compositors when GdkScreen "composited-changed" fires. r=karlt
MozReview-Commit-ID: 3vva2XgSa60
2017-08-11 02:52:08 -05:00
Nicholas Nethercote
723f585d9c Bug 1386600 - Change nsIStringBundle methods to return |AString| instead of |wstring|. r=emk,sr=dbaron.
This removes about 2/3 of the occurrences of nsXPIDLString in the tree. The
places where nsXPIDLStrings are null-checked are replaced with |rv| checks.

The patch also removes a couple of unused declarations from
nsIStringBundle.idl.

Note that nsStringBundle::GetStringFromNameHelper() was merged into
GetStringFromName(), because they both would have had the same signature.
2017-08-04 14:40:52 +10:00