Implement SetIgnoreMouseEvents for Linux
authorCheng Zhao <zcbenz@gmail.com>
Tue, 7 Jun 2016 11:23:29 +0000 (20:23 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Tue, 7 Jun 2016 11:23:29 +0000 (20:23 +0900)
atom/browser/native_window_views.cc

index 6b16072..29c4187 100644 (file)
@@ -680,6 +680,15 @@ void NativeWindowViews::SetIgnoreMouseEvents(bool ignore) {
   else
     ex_style &= ~(WS_EX_TRANSPARENT | WS_EX_LAYERED);
   ::SetWindowLong(GetAcceleratedWidget(), GWL_EXSTYLE, ex_style);
+#elif defined(USE_X11)
+  if (ignore) {
+    XRectangle r = {0, 0, 1, 1};
+    XShapeCombineRectangles(gfx::GetXDisplay(), GetAcceleratedWidget(),
+                            ShapeInput, 0, 0, &r, 1, ShapeSet, YXBanded);
+  } else {
+    XShapeCombineMask(gfx::GetXDisplay(), GetAcceleratedWidget(),
+                      ShapeInput, 0, 0, None, ShapeSet);
+  }
 #endif
 }