X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FManaged.Windows.Forms%2FSystem.Windows.Forms.X11Internal%2FXplatUIX11-new.cs;h=ef259b767aca23d4a8ee35079194fba93debe999;hb=51601c8bcb023fccae220946cfde66e2f683c022;hp=b3e6e77bc4a5a31711de2b06a5519e709b7ce0ad;hpb=b2262f41726a89c8209facb3ea9e4be9582422b5;p=mono.git diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.X11Internal/XplatUIX11-new.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.X11Internal/XplatUIX11-new.cs index b3e6e77bc4a..ef259b767ac 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms.X11Internal/XplatUIX11-new.cs +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms.X11Internal/XplatUIX11-new.cs @@ -150,7 +150,7 @@ namespace System.Windows.Forms.X11Internal { #region Public Properties - internal override int Caption { + internal override int CaptionHeight { get { return 19; } } @@ -167,7 +167,7 @@ namespace System.Windows.Forms.X11Internal { } internal override Size FrameBorderSize { - get { throw new NotImplementedException(); } + get { return new Size (4, 4); } } internal override Size IconSize { @@ -184,11 +184,13 @@ namespace System.Windows.Forms.X11Internal { internal override Size MaxWindowTrackSize { get { return new Size (WorkingArea.Width, WorkingArea.Height); } - } + } - internal override Size MinimizedWindowSize { - get { return new Size(1, 1); } - } + internal override bool MenuAccessKeysUnderlined { + get { + return false; + } + } internal override Size MinimizedWindowSpacingSize { get { return new Size(1, 1); } @@ -198,10 +200,6 @@ namespace System.Windows.Forms.X11Internal { get { return new Size(1, 1); } } - internal override Size MinWindowTrackSize { - get { return new Size(1, 1); } - } - internal override Keys ModifierKeys { get { return display.ModifierKeys; } } @@ -231,7 +229,7 @@ namespace System.Windows.Forms.X11Internal { } internal override Rectangle VirtualScreen { - get { return WorkingArea; } + get { return display.VirtualScreen; } } internal override Rectangle WorkingArea { @@ -246,7 +244,13 @@ namespace System.Windows.Forms.X11Internal { #endregion // Public properties #region Public Static Methods - internal override IntPtr InitializeDriver() + internal override void RaiseIdle (EventArgs e) + { + X11ThreadQueue queue = ThreadQueue (Thread.CurrentThread); + queue.OnIdle (e); + } + + internal override IntPtr InitializeDriver () { lock (this) { if (display == null) @@ -290,20 +294,9 @@ namespace System.Windows.Forms.X11Internal { } // XXX this implementation should probably be shared between all non-win32 backends - internal override bool CalculateWindowRect (ref Rectangle ClientRect, int Style, int ExStyle, Menu menu, out Rectangle WindowRect) + internal override bool CalculateWindowRect (ref Rectangle ClientRect, CreateParams cp, Menu menu, out Rectangle WindowRect) { - FormBorderStyle border_style; - TitleStyle title_style; - int caption_height; - int tool_caption_height; - - // XXX this method should be static on Hwnd, not X11Hwnd - X11Hwnd.DeriveStyles (Style, ExStyle, out border_style, out title_style, - out caption_height, out tool_caption_height); - - WindowRect = Hwnd.GetWindowRectangle(border_style, menu, title_style, - caption_height, tool_caption_height, - ClientRect); + WindowRect = Hwnd.GetWindowRectangle (cp, menu, ClientRect); return true; } @@ -382,7 +375,10 @@ namespace System.Windows.Forms.X11Internal { { return display.DefineCursor (bitmap, mask, cursor_pixel, mask_pixel, xHotSpot, yHotSpot); } - + internal override Bitmap DefineStdCursorBitmap (StdCursor id) + { + return display.DefineStdCursorBitmap (id); + } internal override IntPtr DefineStdCursor (StdCursor id) { return display.DefineStdCursor (id); @@ -432,6 +428,21 @@ namespace System.Windows.Forms.X11Internal { return display.DispatchMessage (ref msg); } + internal override void DrawReversibleLine (Point start, Point end, Color backColor) + { + display.DrawReversibleLine (start, end, backColor); + } + + internal override void FillReversibleRectangle (Rectangle rectangle, Color backColor) + { + display.FillReversibleRectangle (rectangle, backColor); + } + + internal override void DrawReversibleFrame (Rectangle rectangle, Color backColor, FrameStyle style) + { + display.DrawReversibleFrame (rectangle, backColor, style); + } + internal override void DrawReversibleRectangle (IntPtr handle, Rectangle rect, int line_width) { X11Hwnd hwnd = (X11Hwnd)Hwnd.ObjectFromHandle(handle); @@ -506,6 +517,11 @@ namespace System.Windows.Forms.X11Internal { return IntPtr.Zero; } + // This is a nop on win32 and x11 + internal override IntPtr GetPreviousWindow(IntPtr handle) { + return handle; + } + internal override void GetCursorPos (IntPtr handle, out int x, out int y) { display.GetCursorPos ((X11Hwnd)Hwnd.ObjectFromHandle(handle), @@ -520,7 +536,10 @@ namespace System.Windows.Forms.X11Internal { // XXX this should be shared amongst non-win32 backends internal override bool GetFontMetrics (Graphics g, Font font, out int ascent, out int descent) { - return Xlib.GetFontMetrics(g.GetHdc(), font.ToHfont(), out ascent, out descent); + FontFamily ff = font.FontFamily; + ascent = ff.GetCellAscent (font.Style); + descent = ff.GetCellDescent (font.Style); + return true; } @@ -662,14 +681,14 @@ namespace System.Windows.Forms.X11Internal { display.OverrideCursor = cursor; } - internal override PaintEventArgs PaintEventStart (IntPtr handle, bool client) + internal override PaintEventArgs PaintEventStart (ref Message m, IntPtr handle, bool client) { - return display.PaintEventStart (handle, client); + return display.PaintEventStart (ref m, handle, client); } - internal override void PaintEventEnd (IntPtr handle, bool client) + internal override void PaintEventEnd (ref Message m, IntPtr handle, bool client) { - display.PaintEventEnd (handle, client); + display.PaintEventEnd (ref m, handle, client); } @@ -685,8 +704,8 @@ namespace System.Windows.Forms.X11Internal { internal override void PostQuitMessage(int exitCode) { + display.PostMessage (display.FosterParent.Handle, Msg.WM_QUIT, IntPtr.Zero, IntPtr.Zero); display.Flush (); - ThreadQueue(Thread.CurrentThread).PostQuitState = true; } [MonoTODO] @@ -762,6 +781,11 @@ namespace System.Windows.Forms.X11Internal { return display.SendMessage (handle, message, wParam, lParam); } + internal override int SendInput(IntPtr handle, Queue keys) { + return display.SendInput(handle, keys); + } + + internal override void SetAllowDrop (IntPtr handle, bool value) { // We allow drop on all windows @@ -864,7 +888,17 @@ namespace System.Windows.Forms.X11Internal { queue.SetTimer (timer); } - internal override bool SetTopmost(IntPtr handle, IntPtr handle_owner, bool enabled) + internal override bool SetTopmost(IntPtr handle, bool enabled) + { + X11Hwnd hwnd = (X11Hwnd) Hwnd.ObjectFromHandle (handle); + + if (hwnd == null) + return false; + + return hwnd.SetTopmost (enabled); + } + + internal override bool SetOwner(IntPtr handle, IntPtr handle_owner) { X11Hwnd hwnd; @@ -875,7 +909,7 @@ namespace System.Windows.Forms.X11Internal { X11Hwnd hwnd_owner = (X11Hwnd)Hwnd.ObjectFromHandle(handle_owner); - return hwnd.SetTopmost (hwnd_owner, enabled); + return hwnd.SetOwner (hwnd_owner); } internal override bool SetVisible (IntPtr handle, bool visible, bool activate) @@ -921,7 +955,17 @@ namespace System.Windows.Forms.X11Internal { } } - internal override void SetWindowTransparency(IntPtr handle, double transparency, Color key) + internal override double GetWindowTransparency (IntPtr handle) + { + X11Hwnd hwnd = (X11Hwnd)Hwnd.ObjectFromHandle(handle); + + if (hwnd != null) + return hwnd.GetWindowTransparency (); + else + return 0.0; + } + + internal override void SetWindowTransparency (IntPtr handle, double transparency, Color key) { X11Hwnd hwnd = (X11Hwnd)Hwnd.ObjectFromHandle(handle); @@ -951,7 +995,7 @@ namespace System.Windows.Forms.X11Internal { return (object) ThreadQueue(thread); } - internal override bool SupportsTransparency() + internal override TransparencySupport SupportsTransparency() { return display.SupportsTransparency (); } @@ -971,6 +1015,29 @@ namespace System.Windows.Forms.X11Internal { display.SystrayRemove (handle, ref tt); } + NotifyIcon.BalloonWindow balloon_window; + + internal override void SystrayBalloon(IntPtr handle, int timeout, string title, string text, ToolTipIcon icon) + { + Control control = Control.FromHandle(handle); + + if (control == null) + return; + + if (balloon_window != null) { + balloon_window.Close (); + balloon_window.Dispose (); + } + + balloon_window = new NotifyIcon.BalloonWindow (handle); + balloon_window.Title = title; + balloon_window.Text = text; + balloon_window.Timeout = timeout; + balloon_window.Show (); + + SendMessage(handle, Msg.WM_USER, IntPtr.Zero, (IntPtr) Msg.NIN_BALLOONSHOW); + } + internal override bool Text (IntPtr handle, string text) { X11Hwnd hwnd = (X11Hwnd) Hwnd.ObjectFromHandle(handle); @@ -994,6 +1061,33 @@ namespace System.Windows.Forms.X11Internal { hwnd.Update (); } + internal override void CreateOffscreenDrawable (IntPtr handle, + int width, int height, + out object offscreen_drawable) + { + display.CreateOffscreenDrawable (handle, width, height, + out offscreen_drawable); + } + + internal override void DestroyOffscreenDrawable (object offscreen_drawable) + { + display.DestroyOffscreenDrawable (offscreen_drawable); + } + + internal override Graphics GetOffscreenGraphics (object offscreen_drawable) + { + return display.GetOffscreenGraphics (offscreen_drawable); + } + + internal override void BlitFromOffscreen (IntPtr dest_handle, + Graphics dest_dc, + object offscreen_drawable, + Graphics offscreen_dc, + Rectangle r) + { + display.BlitFromOffscreen (dest_handle, dest_dc, offscreen_drawable, offscreen_dc, r); + } + #endregion // Public Static Methods #region Events