From eea332a468ee56b84f4df79db92e00853dcce67c Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 11 Oct 2018 21:24:05 +0100 Subject: [PATCH] implement window title. --- src/Avalonia.Native.OSX/window.mm | 23 +++++++++++++++++++++-- src/Avalonia.Native/WindowImpl.cs | 1 + src/headers/avalonia-native.h | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Native.OSX/window.mm b/src/Avalonia.Native.OSX/window.mm index 67e0046f26..0bbbf74c01 100644 --- a/src/Avalonia.Native.OSX/window.mm +++ b/src/Avalonia.Native.OSX/window.mm @@ -17,8 +17,7 @@ public: AvnWindow* Window; ComPtr BaseEvents; AvnPoint lastPositionSet; - - + NSString* _lastTitle; WindowBaseImpl(IAvnWindowBaseEvents* events) { @@ -28,6 +27,7 @@ public: lastPositionSet.X = 100; lastPositionSet.Y = 100; + _lastTitle = @""; [Window setStyleMask:NSWindowStyleMaskBorderless]; [Window setBackingType:NSBackingStoreBuffered]; @@ -46,6 +46,9 @@ public: SetPosition(lastPositionSet); UpdateStyle(); [Window makeKeyAndOrderFront:Window]; + + [Window setTitle:_lastTitle]; + [Window setTitleVisibility:NSWindowTitleVisible]; return S_OK; } @@ -891,6 +894,9 @@ private: SetPosition(lastPositionSet); UpdateStyle(); + [Window setTitle:_lastTitle]; + [Window setTitleVisibility:NSWindowTitleVisible]; + [Window pollModalSession:session]; return S_OK; @@ -947,6 +953,19 @@ private: { _hasDecorations = value; UpdateStyle(); + + return S_OK; + } + } + + virtual HRESULT SetTitle (const char* title) + { + @autoreleasepool + { + _lastTitle = [NSString stringWithUTF8String:title]; + [Window setTitle:_lastTitle]; + [Window setTitleVisibility:NSWindowTitleVisible]; + return S_OK; } } diff --git a/src/Avalonia.Native/WindowImpl.cs b/src/Avalonia.Native/WindowImpl.cs index 2e9a07ebe3..fc6e23792e 100644 --- a/src/Avalonia.Native/WindowImpl.cs +++ b/src/Avalonia.Native/WindowImpl.cs @@ -58,6 +58,7 @@ namespace Avalonia.Native public void SetTitle(string title) { + _native.SetTitle(title); } public WindowState WindowState diff --git a/src/headers/avalonia-native.h b/src/headers/avalonia-native.h index fe2a356dd2..2c12f39da6 100644 --- a/src/headers/avalonia-native.h +++ b/src/headers/avalonia-native.h @@ -195,6 +195,7 @@ AVNCOM(IAvnWindow, 04) : virtual IAvnWindowBase virtual HRESULT ShowDialog (IUnknown**ppv) = 0; virtual HRESULT SetCanResize(bool value) = 0; virtual HRESULT SetHasDecorations(bool value) = 0; + virtual HRESULT SetTitle (const char* title) = 0; virtual HRESULT SetTitleBarColor (AvnColor color) = 0; virtual HRESULT SetWindowState(AvnWindowState state) = 0; virtual HRESULT GetWindowState(AvnWindowState*ret) = 0;