70 lines
3.1 KiB
Diff
70 lines
3.1 KiB
Diff
|
diff -up firefox-74.0/widget/gtk/mozcontainer.cpp.mozilla-1609538 firefox-74.0/widget/gtk/mozcontainer.cpp
|
||
|
--- firefox-74.0/widget/gtk/mozcontainer.cpp.mozilla-1609538 2020-03-02 23:04:56.000000000 +0100
|
||
|
+++ firefox-74.0/widget/gtk/mozcontainer.cpp 2020-03-04 12:26:05.561668537 +0100
|
||
|
@@ -164,13 +164,15 @@ void moz_container_move(MozContainer* co
|
||
|
|
||
|
// wl_subsurface_set_position is actually property of parent surface
|
||
|
// which is effective when parent surface is commited.
|
||
|
- wl_surface* parent_surface =
|
||
|
- moz_gtk_widget_get_wl_surface(GTK_WIDGET(container));
|
||
|
- if (parent_surface) {
|
||
|
- wl_subsurface_set_position(container->subsurface, container->subsurface_dx,
|
||
|
- container->subsurface_dy);
|
||
|
- wl_surface_commit(parent_surface);
|
||
|
- container->surface_position_needs_update = false;
|
||
|
+ wl_subsurface_set_position(container->subsurface, container->subsurface_dx,
|
||
|
+ container->subsurface_dy);
|
||
|
+ container->surface_position_needs_update = false;
|
||
|
+
|
||
|
+ GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(container));
|
||
|
+ if (window) {
|
||
|
+ GdkRectangle rect = (GdkRectangle){.width = gdk_window_get_width(window),
|
||
|
+ .height = gdk_window_get_height(window)};
|
||
|
+ gdk_window_invalidate_rect(window, &rect, false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@@ -575,11 +577,15 @@ static void moz_container_set_opaque_reg
|
||
|
gtk_widget_get_allocation(GTK_WIDGET(container), &allocation);
|
||
|
|
||
|
// Set region to mozcontainer which does not have any offset
|
||
|
- wl_region* region =
|
||
|
- CreateOpaqueRegionWayland(0, 0, allocation.width, allocation.height,
|
||
|
- container->opaque_region_subtract_corners);
|
||
|
- wl_surface_set_opaque_region(container->surface, region);
|
||
|
- wl_region_destroy(region);
|
||
|
+ if (container->opaque_region_subtract_corners) {
|
||
|
+ wl_region* region =
|
||
|
+ CreateOpaqueRegionWayland(0, 0, allocation.width, allocation.height,
|
||
|
+ container->opaque_region_subtract_corners);
|
||
|
+ wl_surface_set_opaque_region(container->surface, region);
|
||
|
+ wl_region_destroy(region);
|
||
|
+ } else {
|
||
|
+ wl_surface_set_opaque_region(container->surface, nullptr);
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
struct wl_surface* moz_container_get_wl_surface(MozContainer* container) {
|
||
|
diff -up firefox-74.0/widget/gtk/nsWindow.cpp.mozilla-1609538 firefox-74.0/widget/gtk/nsWindow.cpp
|
||
|
--- firefox-74.0/widget/gtk/nsWindow.cpp.mozilla-1609538 2020-03-04 12:23:34.365414768 +0100
|
||
|
+++ firefox-74.0/widget/gtk/nsWindow.cpp 2020-03-04 12:23:34.368414793 +0100
|
||
|
@@ -4866,10 +4866,14 @@ void nsWindow::UpdateTopLevelOpaqueRegio
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
- wl_region* region =
|
||
|
- CreateOpaqueRegionWayland(x, y, width, height, aSubtractCorners);
|
||
|
- wl_surface_set_opaque_region(surface, region);
|
||
|
- wl_region_destroy(region);
|
||
|
+ if (!aSubtractCorners) {
|
||
|
+ wl_region* region =
|
||
|
+ CreateOpaqueRegionWayland(x, y, width, height, aSubtractCorners);
|
||
|
+ wl_surface_set_opaque_region(surface, region);
|
||
|
+ wl_region_destroy(region);
|
||
|
+ } else {
|
||
|
+ wl_surface_set_opaque_region(surface, nullptr);
|
||
|
+ }
|
||
|
|
||
|
GdkWindow* window = gtk_widget_get_window(mShell);
|
||
|
if (window) {
|