mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-25 15:34:36 +00:00
Set owner of file dialogs on windows.
This commit is contained in:
parent
483bc3f549
commit
d1ef8ea90b
@ -38,7 +38,8 @@ typedef enum {
|
|||||||
/* single file open dialog */
|
/* single file open dialog */
|
||||||
nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList,
|
nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList,
|
||||||
const nfdchar_t *defaultPath,
|
const nfdchar_t *defaultPath,
|
||||||
nfdchar_t **outPath );
|
nfdchar_t **outPath,
|
||||||
|
void* owner );
|
||||||
|
|
||||||
/* multiple file open dialog */
|
/* multiple file open dialog */
|
||||||
nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList,
|
nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList,
|
||||||
@ -48,7 +49,8 @@ nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList,
|
|||||||
/* save dialog */
|
/* save dialog */
|
||||||
nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList,
|
nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList,
|
||||||
const nfdchar_t *defaultPath,
|
const nfdchar_t *defaultPath,
|
||||||
nfdchar_t **outPath );
|
nfdchar_t **outPath,
|
||||||
|
void* owner );
|
||||||
|
|
||||||
|
|
||||||
/* select folder dialog */
|
/* select folder dialog */
|
||||||
|
@ -119,7 +119,8 @@ static nfdresult_t AllocPathSet( NSArray *urls, nfdpathset_t *pathset )
|
|||||||
|
|
||||||
nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList,
|
nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList,
|
||||||
const nfdchar_t *defaultPath,
|
const nfdchar_t *defaultPath,
|
||||||
nfdchar_t **outPath )
|
nfdchar_t **outPath,
|
||||||
|
void* owner )
|
||||||
{
|
{
|
||||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
|
|
||||||
@ -205,7 +206,8 @@ nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList,
|
|||||||
|
|
||||||
nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList,
|
nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList,
|
||||||
const nfdchar_t *defaultPath,
|
const nfdchar_t *defaultPath,
|
||||||
nfdchar_t **outPath )
|
nfdchar_t **outPath,
|
||||||
|
void* owner )
|
||||||
{
|
{
|
||||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
NSWindow *keyWindow = [[NSApplication sharedApplication] keyWindow];
|
NSWindow *keyWindow = [[NSApplication sharedApplication] keyWindow];
|
||||||
|
@ -167,7 +167,8 @@ static void WaitForCleanup(void)
|
|||||||
|
|
||||||
nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList,
|
nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList,
|
||||||
const nfdchar_t *defaultPath,
|
const nfdchar_t *defaultPath,
|
||||||
nfdchar_t **outPath )
|
nfdchar_t **outPath,
|
||||||
|
void* owner )
|
||||||
{
|
{
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
nfdresult_t result;
|
nfdresult_t result;
|
||||||
@ -271,7 +272,8 @@ nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList,
|
|||||||
|
|
||||||
nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList,
|
nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList,
|
||||||
const nfdchar_t *defaultPath,
|
const nfdchar_t *defaultPath,
|
||||||
nfdchar_t **outPath )
|
nfdchar_t **outPath,
|
||||||
|
void* owner )
|
||||||
{
|
{
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
nfdresult_t result;
|
nfdresult_t result;
|
||||||
|
@ -364,7 +364,8 @@ static nfdresult_t SetDefaultPath( IFileDialog *dialog, const char *defaultPath
|
|||||||
|
|
||||||
nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList,
|
nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList,
|
||||||
const nfdchar_t *defaultPath,
|
const nfdchar_t *defaultPath,
|
||||||
nfdchar_t **outPath )
|
nfdchar_t **outPath,
|
||||||
|
void* owner )
|
||||||
{
|
{
|
||||||
HRESULT result;
|
HRESULT result;
|
||||||
nfdresult_t nfdResult = NFD_ERROR;
|
nfdresult_t nfdResult = NFD_ERROR;
|
||||||
@ -407,7 +408,7 @@ nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Show the dialog.
|
// Show the dialog.
|
||||||
result = fileOpenDialog->Show(NULL);
|
result = fileOpenDialog->Show((HWND)owner);
|
||||||
if ( SUCCEEDED(result) )
|
if ( SUCCEEDED(result) )
|
||||||
{
|
{
|
||||||
// Get the file name
|
// Get the file name
|
||||||
@ -559,7 +560,8 @@ end:
|
|||||||
|
|
||||||
nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList,
|
nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList,
|
||||||
const nfdchar_t *defaultPath,
|
const nfdchar_t *defaultPath,
|
||||||
nfdchar_t **outPath )
|
nfdchar_t **outPath,
|
||||||
|
void* owner )
|
||||||
{
|
{
|
||||||
nfdresult_t nfdResult = NFD_ERROR;
|
nfdresult_t nfdResult = NFD_ERROR;
|
||||||
|
|
||||||
@ -600,7 +602,7 @@ nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Show the dialog.
|
// Show the dialog.
|
||||||
result = fileSaveDialog->Show(NULL);
|
result = fileSaveDialog->Show((HWND)owner);
|
||||||
if ( SUCCEEDED(result) )
|
if ( SUCCEEDED(result) )
|
||||||
{
|
{
|
||||||
// Get the file name
|
// Get the file name
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
# include <shellapi.h>
|
# include <shellapi.h>
|
||||||
|
# define GLFW_EXPOSE_NATIVE_WIN32
|
||||||
|
# include <GLFW/glfw3native.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define STB_IMAGE_IMPLEMENTATION
|
#define STB_IMAGE_IMPLEMENTATION
|
||||||
@ -83,6 +85,15 @@ static void WindowRefreshCallback( GLFWwindow* window )
|
|||||||
DrawContents();
|
DrawContents();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void* GetMainWindowNative()
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
return (void*)glfwGetWin32Window( s_glfwWindow );
|
||||||
|
#else
|
||||||
|
return nullptr;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<std::unordered_map<std::string, uint64_t>::const_iterator> RebuildConnectionHistory( const std::unordered_map<std::string, uint64_t>& connHistMap )
|
std::vector<std::unordered_map<std::string, uint64_t>::const_iterator> RebuildConnectionHistory( const std::unordered_map<std::string, uint64_t>& connHistMap )
|
||||||
{
|
{
|
||||||
std::vector<std::unordered_map<std::string, uint64_t>::const_iterator> ret;
|
std::vector<std::unordered_map<std::string, uint64_t>::const_iterator> ret;
|
||||||
@ -291,7 +302,7 @@ int main( int argc, char** argv )
|
|||||||
auto f = std::unique_ptr<tracy::FileRead>( tracy::FileRead::Open( argv[1] ) );
|
auto f = std::unique_ptr<tracy::FileRead>( tracy::FileRead::Open( argv[1] ) );
|
||||||
if( f )
|
if( f )
|
||||||
{
|
{
|
||||||
view = std::make_unique<tracy::View>( *f, fixedWidth, smallFont, bigFont, SetWindowTitleCallback );
|
view = std::make_unique<tracy::View>( *f, fixedWidth, smallFont, bigFont, SetWindowTitleCallback, GetMainWindowNative );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -317,7 +328,7 @@ int main( int argc, char** argv )
|
|||||||
}
|
}
|
||||||
if( connectTo )
|
if( connectTo )
|
||||||
{
|
{
|
||||||
view = std::make_unique<tracy::View>( connectTo, port, fixedWidth, smallFont, bigFont, SetWindowTitleCallback );
|
view = std::make_unique<tracy::View>( connectTo, port, fixedWidth, smallFont, bigFont, SetWindowTitleCallback, GetMainWindowNative );
|
||||||
}
|
}
|
||||||
|
|
||||||
glfwShowWindow( window );
|
glfwShowWindow( window );
|
||||||
@ -613,18 +624,18 @@ static void DrawContents()
|
|||||||
{
|
{
|
||||||
std::string addrPart = std::string( addr, ptr );
|
std::string addrPart = std::string( addr, ptr );
|
||||||
uint32_t portPart = atoi( ptr+1 );
|
uint32_t portPart = atoi( ptr+1 );
|
||||||
view = std::make_unique<tracy::View>( addrPart.c_str(), portPart, fixedWidth, smallFont, bigFont, SetWindowTitleCallback );
|
view = std::make_unique<tracy::View>( addrPart.c_str(), portPart, fixedWidth, smallFont, bigFont, SetWindowTitleCallback, GetMainWindowNative );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
view = std::make_unique<tracy::View>( addr, port, fixedWidth, smallFont, bigFont, SetWindowTitleCallback );
|
view = std::make_unique<tracy::View>( addr, port, fixedWidth, smallFont, bigFont, SetWindowTitleCallback, GetMainWindowNative );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ImGui::SameLine( 0, ImGui::GetFontSize() * 2 );
|
ImGui::SameLine( 0, ImGui::GetFontSize() * 2 );
|
||||||
if( ImGui::Button( ICON_FA_FOLDER_OPEN " Open saved trace" ) && !loadThread.joinable() )
|
if( ImGui::Button( ICON_FA_FOLDER_OPEN " Open saved trace" ) && !loadThread.joinable() )
|
||||||
{
|
{
|
||||||
nfdchar_t* fn;
|
nfdchar_t* fn;
|
||||||
auto res = NFD_OpenDialog( "tracy", nullptr, &fn );
|
auto res = NFD_OpenDialog( "tracy", nullptr, &fn, GetMainWindowNative() );
|
||||||
if( res == NFD_OKAY )
|
if( res == NFD_OKAY )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -635,7 +646,7 @@ static void DrawContents()
|
|||||||
loadThread = std::thread( [f] {
|
loadThread = std::thread( [f] {
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
view = std::make_unique<tracy::View>( *f, fixedWidth, smallFont, bigFont, SetWindowTitleCallback );
|
view = std::make_unique<tracy::View>( *f, fixedWidth, smallFont, bigFont, SetWindowTitleCallback, GetMainWindowNative );
|
||||||
}
|
}
|
||||||
catch( const tracy::UnsupportedVersion& e )
|
catch( const tracy::UnsupportedVersion& e )
|
||||||
{
|
{
|
||||||
@ -757,7 +768,7 @@ static void DrawContents()
|
|||||||
}
|
}
|
||||||
if( selected && !loadThread.joinable() )
|
if( selected && !loadThread.joinable() )
|
||||||
{
|
{
|
||||||
view = std::make_unique<tracy::View>( v.second.address.c_str(), v.second.port, fixedWidth, smallFont, bigFont, SetWindowTitleCallback );
|
view = std::make_unique<tracy::View>( v.second.address.c_str(), v.second.port, fixedWidth, smallFont, bigFont, SetWindowTitleCallback, GetMainWindowNative );
|
||||||
}
|
}
|
||||||
ImGui::NextColumn();
|
ImGui::NextColumn();
|
||||||
const auto acttime = ( v.second.activeTime + ( time - v.second.time ) / 1000 ) * 1000000000ll;
|
const auto acttime = ( v.second.activeTime + ( time - v.second.time ) / 1000 ) * 1000000000ll;
|
||||||
@ -897,7 +908,7 @@ static void DrawContents()
|
|||||||
viewShutdown.store( ViewShutdown::False, std::memory_order_relaxed );
|
viewShutdown.store( ViewShutdown::False, std::memory_order_relaxed );
|
||||||
if( reconnect )
|
if( reconnect )
|
||||||
{
|
{
|
||||||
view = std::make_unique<tracy::View>( reconnectAddr.c_str(), reconnectPort, fixedWidth, smallFont, bigFont, SetWindowTitleCallback );
|
view = std::make_unique<tracy::View>( reconnectAddr.c_str(), reconnectPort, fixedWidth, smallFont, bigFont, SetWindowTitleCallback, GetMainWindowNative );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -68,7 +68,7 @@ static SourceView::RegsX86 s_regMapX86[X86_REG_ENDING];
|
|||||||
enum { JumpSeparation = 6 };
|
enum { JumpSeparation = 6 };
|
||||||
enum { JumpArrowBase = 9 };
|
enum { JumpArrowBase = 9 };
|
||||||
|
|
||||||
SourceView::SourceView( ImFont* font )
|
SourceView::SourceView( ImFont* font, GetWindowCallback gwcb )
|
||||||
: m_font( font )
|
: m_font( font )
|
||||||
, m_file( nullptr )
|
, m_file( nullptr )
|
||||||
, m_fileStringIdx( 0 )
|
, m_fileStringIdx( 0 )
|
||||||
@ -93,6 +93,7 @@ SourceView::SourceView( ImFont* font )
|
|||||||
, m_showJumps( true )
|
, m_showJumps( true )
|
||||||
, m_cpuArch( CpuArchUnknown )
|
, m_cpuArch( CpuArchUnknown )
|
||||||
, m_showLatency( false )
|
, m_showLatency( false )
|
||||||
|
, m_gwcb( gwcb )
|
||||||
{
|
{
|
||||||
m_microArchOpMap.reserve( OpsNum );
|
m_microArchOpMap.reserve( OpsNum );
|
||||||
for( int i=0; i<OpsNum; i++ )
|
for( int i=0; i<OpsNum; i++ )
|
||||||
@ -3537,7 +3538,7 @@ void SourceView::Save( const Worker& worker, size_t start, size_t stop )
|
|||||||
assert( start < stop );
|
assert( start < stop );
|
||||||
|
|
||||||
nfdchar_t* fn;
|
nfdchar_t* fn;
|
||||||
auto res = NFD_SaveDialog( "asm", nullptr, &fn );
|
auto res = NFD_SaveDialog( "asm", nullptr, &fn, m_gwcb ? m_gwcb() : nullptr );
|
||||||
if( res == NFD_OKAY )
|
if( res == NFD_OKAY )
|
||||||
{
|
{
|
||||||
FILE* f = nullptr;
|
FILE* f = nullptr;
|
||||||
|
@ -127,7 +127,9 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SourceView( ImFont* font );
|
using GetWindowCallback = void*(*)();
|
||||||
|
|
||||||
|
SourceView( ImFont* font, GetWindowCallback gwcb );
|
||||||
~SourceView();
|
~SourceView();
|
||||||
|
|
||||||
void SetCpuId( uint32_t cpuid );
|
void SetCpuId( uint32_t cpuid );
|
||||||
@ -242,6 +244,8 @@ private:
|
|||||||
|
|
||||||
float m_srcWidth;
|
float m_srcWidth;
|
||||||
float m_asmWidth;
|
float m_asmWidth;
|
||||||
|
|
||||||
|
GetWindowCallback m_gwcb;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ enum { MinFrameSize = 5 };
|
|||||||
|
|
||||||
static View* s_instance = nullptr;
|
static View* s_instance = nullptr;
|
||||||
|
|
||||||
View::View( const char* addr, int port, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb )
|
View::View( const char* addr, int port, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, GetWindowCallback gwcb )
|
||||||
: m_worker( addr, port )
|
: m_worker( addr, port )
|
||||||
, m_staticView( false )
|
, m_staticView( false )
|
||||||
, m_pause( false )
|
, m_pause( false )
|
||||||
@ -139,6 +139,7 @@ View::View( const char* addr, int port, ImFont* fixedWidth, ImFont* smallFont, I
|
|||||||
, m_smallFont( smallFont )
|
, m_smallFont( smallFont )
|
||||||
, m_bigFont( bigFont )
|
, m_bigFont( bigFont )
|
||||||
, m_stcb( stcb )
|
, m_stcb( stcb )
|
||||||
|
, m_gwcb( gwcb )
|
||||||
, m_userData()
|
, m_userData()
|
||||||
{
|
{
|
||||||
assert( s_instance == nullptr );
|
assert( s_instance == nullptr );
|
||||||
@ -147,7 +148,7 @@ View::View( const char* addr, int port, ImFont* fixedWidth, ImFont* smallFont, I
|
|||||||
InitTextEditor( fixedWidth );
|
InitTextEditor( fixedWidth );
|
||||||
}
|
}
|
||||||
|
|
||||||
View::View( FileRead& f, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb )
|
View::View( FileRead& f, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb, GetWindowCallback gwcb )
|
||||||
: m_worker( f )
|
: m_worker( f )
|
||||||
, m_filename( f.GetFilename() )
|
, m_filename( f.GetFilename() )
|
||||||
, m_staticView( true )
|
, m_staticView( true )
|
||||||
@ -157,6 +158,7 @@ View::View( FileRead& f, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont,
|
|||||||
, m_smallFont( smallFont )
|
, m_smallFont( smallFont )
|
||||||
, m_bigFont( bigFont )
|
, m_bigFont( bigFont )
|
||||||
, m_stcb( stcb )
|
, m_stcb( stcb )
|
||||||
|
, m_gwcb( gwcb )
|
||||||
, m_userData( m_worker.GetCaptureProgram().c_str(), m_worker.GetCaptureTime() )
|
, m_userData( m_worker.GetCaptureProgram().c_str(), m_worker.GetCaptureTime() )
|
||||||
{
|
{
|
||||||
assert( s_instance == nullptr );
|
assert( s_instance == nullptr );
|
||||||
@ -196,7 +198,7 @@ View::~View()
|
|||||||
|
|
||||||
void View::InitTextEditor( ImFont* font )
|
void View::InitTextEditor( ImFont* font )
|
||||||
{
|
{
|
||||||
m_sourceView = std::make_unique<SourceView>( font );
|
m_sourceView = std::make_unique<SourceView>( font, m_gwcb );
|
||||||
m_sourceViewFile = nullptr;
|
m_sourceViewFile = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1120,7 +1122,7 @@ bool View::DrawConnection()
|
|||||||
{
|
{
|
||||||
#ifndef TRACY_NO_FILESELECTOR
|
#ifndef TRACY_NO_FILESELECTOR
|
||||||
nfdchar_t* fn;
|
nfdchar_t* fn;
|
||||||
auto res = NFD_SaveDialog( "tracy", nullptr, &fn );
|
auto res = NFD_SaveDialog( "tracy", nullptr, &fn, m_gwcb ? m_gwcb() : nullptr );
|
||||||
if( res == NFD_OKAY )
|
if( res == NFD_OKAY )
|
||||||
#else
|
#else
|
||||||
const char* fn = "trace.tracy";
|
const char* fn = "trace.tracy";
|
||||||
@ -10312,7 +10314,7 @@ void View::DrawCompare()
|
|||||||
if( ImGui::Button( ICON_FA_FOLDER_OPEN " Open second trace" ) && !m_compare.loadThread.joinable() )
|
if( ImGui::Button( ICON_FA_FOLDER_OPEN " Open second trace" ) && !m_compare.loadThread.joinable() )
|
||||||
{
|
{
|
||||||
nfdchar_t* fn;
|
nfdchar_t* fn;
|
||||||
auto res = NFD_OpenDialog( "tracy", nullptr, &fn );
|
auto res = NFD_OpenDialog( "tracy", nullptr, &fn, m_gwcb ? m_gwcb() : nullptr );
|
||||||
if( res == NFD_OKAY )
|
if( res == NFD_OKAY )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -73,10 +73,11 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
using SetTitleCallback = void(*)( const char* );
|
using SetTitleCallback = void(*)( const char* );
|
||||||
|
using GetWindowCallback = void*(*)();
|
||||||
|
|
||||||
View( ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr ) : View( "127.0.0.1", 8086, fixedWidth, smallFont, bigFont, stcb ) {}
|
View( ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr, GetWindowCallback gwcb = nullptr ) : View( "127.0.0.1", 8086, fixedWidth, smallFont, bigFont, stcb, gwcb ) {}
|
||||||
View( const char* addr, int port, ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr );
|
View( const char* addr, int port, ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr, GetWindowCallback gwcb = nullptr );
|
||||||
View( FileRead& f, ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr );
|
View( FileRead& f, ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr, GetWindowCallback gwcb = nullptr );
|
||||||
~View();
|
~View();
|
||||||
|
|
||||||
static bool Draw();
|
static bool Draw();
|
||||||
@ -402,6 +403,7 @@ private:
|
|||||||
float m_rootWidth, m_rootHeight;
|
float m_rootWidth, m_rootHeight;
|
||||||
SetTitleCallback m_stcb;
|
SetTitleCallback m_stcb;
|
||||||
bool m_titleSet = false;
|
bool m_titleSet = false;
|
||||||
|
GetWindowCallback m_gwcb;
|
||||||
|
|
||||||
float m_notificationTime = 0;
|
float m_notificationTime = 0;
|
||||||
std::string m_notificationText;
|
std::string m_notificationText;
|
||||||
|
Loading…
Reference in New Issue
Block a user