Browse Source

Added TopLevel::BeginMoveDrag()

pull/372/head
Nikita Tsukanov 11 years ago
parent
commit
0b0875970c
  1. 5
      src/Android/Perspex.Android/Platform/SkiaPlatform/WindowImpl.cs
  2. 8
      src/Gtk/Perspex.Gtk/WindowImpl.cs
  3. 5
      src/Perspex.Controls/Platform/ITopLevelImpl.cs
  4. 1
      src/Perspex.Controls/Platform/PlatformManager.cs
  5. 5
      src/Perspex.Controls/TopLevel.cs
  6. 6
      src/Windows/Perspex.Win32/WindowImpl.cs
  7. 5
      src/iOS/Perspex.iOS/PerspexView.cs

5
src/Android/Perspex.Android/Platform/SkiaPlatform/WindowImpl.cs

@ -126,6 +126,11 @@ namespace Perspex.Android.Platform.SkiaPlatform
this.Visibility = ViewStates.Visible;
}
public void BeginMoveDrag()
{
//Not supported
}
public IDisposable ShowDialog()
{
throw new NotImplementedException();

8
src/Gtk/Perspex.Gtk/WindowImpl.cs

@ -162,6 +162,14 @@ namespace Perspex.Gtk
GdkWindow.Cursor = cursor != null ? new Gdk.Cursor(cursor.Handle) : DefaultCursor;
}
public void BeginMoveDrag()
{
int x, y;
ModifierType mod;
Screen.RootWindow.GetPointer(out x, out y, out mod);
BeginMoveDrag(0, x, y, 0);
}
public IDisposable ShowDialog()
{
Modal = true;

5
src/Perspex.Controls/Platform/ITopLevelImpl.cs

@ -88,5 +88,10 @@ namespace Perspex.Platform
/// Shows the toplevel.
/// </summary>
void Show();
/// <summary>
/// Starts moving a window with left button being held. Should be called from left mouse button press event handler
/// </summary>
void BeginMoveDrag();
}
}

1
src/Perspex.Controls/Platform/PlatformManager.cs

@ -174,6 +174,7 @@ namespace Perspex.Controls.Platform
public void SetTitle(string title) => _window.SetTitle(title);
public void Show() => _tl.Show();
public void BeginMoveDrag() => _tl.BeginMoveDrag();
public IDisposable ShowDialog() => _window.ShowDialog();

5
src/Perspex.Controls/TopLevel.cs

@ -364,5 +364,10 @@ namespace Perspex.Controls
{
_renderQueueManager?.InvalidateRender(this);
}
/// <summary>
/// Starts moving a window with left button being held. Should be called from left mouse button press event handler
/// </summary>
public void BeginMoveDrag() => PlatformImpl.BeginMoveDrag();
}
}

6
src/Windows/Perspex.Win32/WindowImpl.cs

@ -223,6 +223,12 @@ namespace Perspex.Win32
UnmanagedMethods.ShowWindow(_hwnd, UnmanagedMethods.ShowWindowCommand.Normal);
}
public void BeginMoveDrag()
{
UnmanagedMethods.DefWindowProc(_hwnd, (int) UnmanagedMethods.WindowsMessage.WM_NCLBUTTONDOWN,
new IntPtr(2), IntPtr.Zero);
}
public virtual IDisposable ShowDialog()
{
var disabled = s_instances.Where(x => x != this && x.IsEnabled).ToList();

5
src/iOS/Perspex.iOS/PerspexView.cs

@ -107,6 +107,11 @@ namespace Perspex.iOS
_keyboardHelper.ActivateAutoShowKeybord();
}
public void BeginMoveDrag()
{
//Not supported
}
public Size MaxClientSize => Bounds.Size.ToPerspex();
public void SetTitle(string title)
{

Loading…
Cancel
Save