예제 #1
0
        void ShapeWindow()
        {
            Layout();
            var bitmap = new Pixmap(GdkWindow,
                                    Allocation.Width,
                                    Allocation.Height, 1);

            Context g = CairoHelper.Create(bitmap);

            DrawShape(g, Allocation.Width, Allocation.Height);

            g.Dispose();

            if (use_shape_ext)
            {
                ShapeCombineMask(bitmap, 0, 0);
            }
            else
            {
                Context rgba = CairoHelper.Create(GdkWindow);
                DrawShape(rgba, Allocation.Width, Allocation.Height);
                rgba.Dispose();
                try {
                    CompositeUtils.InputShapeCombineMask(this, bitmap, 0, 0);
                } catch (EntryPointNotFoundException) {
                    Log.Warning("gtk+ version doesn't support input shapping");
                }
            }
            bitmap.Dispose();
        }
예제 #2
0
        protected override void OnRealized()
        {
            use_shape_ext = !(CompositeUtils.IsComposited(Screen) && CompositeUtils.SetRgbaColormap(this));

            base.OnRealized();
            ShapeWindow();
        }
예제 #3
0
        protected override void OnRealized()
        {
            bool composited = CompositeUtils.IsComposited(Screen) && CompositeUtils.SetRgbaColormap(this);

            AppPaintable = composited;
            base.OnRealized();
        }
예제 #4
0
 public static void SetWinOpacity(Gtk.Window win, double opacity)
 {
     CompositeUtils.ChangeProperty(win.GdkWindow,
                                   Atom.Intern("_NET_WM_WINDOW_OPACITY", false),
                                   Atom.Intern("CARDINAL", false),
                                   PropMode.Replace,
                                   new uint [] { (uint)(0xffffffff * opacity) });
 }
예제 #5
0
        public static bool IsComposited(Screen screen)
        {
            bool composited;

            try {
                composited = gdk_screen_is_composited(screen.Handle);
            } catch (EntryPointNotFoundException) {
                System.Console.WriteLine("query composite manager locally");
                Atom atom = Atom.Intern(String.Format("_NET_WM_CM_S{0}", screen.Number), false);
                composited = Gdk.Selection.OwnerGetForDisplay(screen.Display, atom) != null;
            }

            // FIXME check for WINDOW_OPACITY so that we support compositing on older composite manager
            // versions before they started supporting the real check given above
            if (!composited)
            {
                composited = CompositeUtils.SupportsHint(screen, "_NET_WM_WINDOW_OPACITY");
            }

            return(composited);
        }
예제 #6
0
파일: Overlay.cs 프로젝트: swgshaw/f-spot
 protected override void OnRealized()
 {
     compositing = CompositeUtils.SetRgbaColormap(this);
 }