mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-14 02:27:40 -04:00
@ -162,6 +162,8 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
|
|
||||||
#include "plTweak.h"
|
#include "plTweak.h"
|
||||||
|
|
||||||
|
#include <ShObjIdl.h>
|
||||||
|
|
||||||
#define MSG_LOADING_BAR
|
#define MSG_LOADING_BAR
|
||||||
|
|
||||||
// static hsVector3 gAbsDown(0,0,-hsScalar1);
|
// static hsVector3 gAbsDown(0,0,-hsScalar1);
|
||||||
@ -170,6 +172,10 @@ static plDispatchBase* gDisp = nil;
|
|||||||
static plTimerCallbackManager* gTimerMgr = nil;
|
static plTimerCallbackManager* gTimerMgr = nil;
|
||||||
static plAudioSystem* gAudio = nil;
|
static plAudioSystem* gAudio = nil;
|
||||||
|
|
||||||
|
#ifdef HS_BUILD_FOR_WIN32
|
||||||
|
extern ITaskbarList3* gTaskbarList;
|
||||||
|
#endif
|
||||||
|
|
||||||
hsBool plClient::fDelayMS = false;
|
hsBool plClient::fDelayMS = false;
|
||||||
|
|
||||||
plClient* plClient::fInstance=nil;
|
plClient* plClient::fInstance=nil;
|
||||||
@ -1286,6 +1292,32 @@ void plClient::IProgressMgrCallbackProc(plOperationProgress * progress)
|
|||||||
if(!fInstance)
|
if(!fInstance)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Increments the taskbar progress [Windows 7+]
|
||||||
|
#ifdef HS_BUILD_FOR_WIN32
|
||||||
|
if (gTaskbarList && fInstance->GetWindowHandle())
|
||||||
|
{
|
||||||
|
static TBPFLAG lastState = TBPF_NOPROGRESS;
|
||||||
|
TBPFLAG myState;
|
||||||
|
|
||||||
|
// So, calling making these kernel calls is kind of SLOW. So, let's
|
||||||
|
// hide that behind a userland check--this helps linking go faster!
|
||||||
|
if (progress->IsLastUpdate())
|
||||||
|
myState = TBPF_NOPROGRESS;
|
||||||
|
else if (progress->GetMax() == 0.f)
|
||||||
|
myState = TBPF_INDETERMINATE;
|
||||||
|
else
|
||||||
|
// This will set TBPF_NORMAL for us
|
||||||
|
myState = TBPF_NORMAL;
|
||||||
|
|
||||||
|
if (myState == TBPF_NORMAL)
|
||||||
|
// This sets us to TBPF_NORMAL
|
||||||
|
gTaskbarList->SetProgressValue(fInstance->GetWindowHandle(), (ULONGLONG)progress->GetProgress(), (ULONGLONG)progress->GetMax());
|
||||||
|
else if (myState != lastState)
|
||||||
|
gTaskbarList->SetProgressState(fInstance->GetWindowHandle(), myState);
|
||||||
|
lastState = myState;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
fInstance->fMessagePumpProc();
|
fInstance->fMessagePumpProc();
|
||||||
|
|
||||||
// HACK HACK HACK HACK!
|
// HACK HACK HACK HACK!
|
||||||
|
@ -77,6 +77,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
#include <shellapi.h>
|
#include <shellapi.h>
|
||||||
#include "WinHttp.h"
|
#include "WinHttp.h"
|
||||||
#include "loginfix.h"
|
#include "loginfix.h"
|
||||||
|
#include <ShObjIdl.h>
|
||||||
//
|
//
|
||||||
// Defines
|
// Defines
|
||||||
//
|
//
|
||||||
@ -99,6 +100,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
// Globals
|
// Globals
|
||||||
//
|
//
|
||||||
hsBool gHasMouse = false;
|
hsBool gHasMouse = false;
|
||||||
|
ITaskbarList3* gTaskbarList = nil; // NT 6.1+ taskbar stuff
|
||||||
|
|
||||||
extern hsBool gDataServerLocal;
|
extern hsBool gDataServerLocal;
|
||||||
extern hsBool gUseBackgroundDownloader;
|
extern hsBool gUseBackgroundDownloader;
|
||||||
@ -137,6 +139,7 @@ bool gPendingActivateFlag = false;
|
|||||||
|
|
||||||
static bool s_loginDlgRunning = false;
|
static bool s_loginDlgRunning = false;
|
||||||
static CEvent s_statusEvent(kEventManualReset);
|
static CEvent s_statusEvent(kEventManualReset);
|
||||||
|
static UINT s_WmTaskbarList = RegisterWindowMessage("TaskbarButtonCreated");
|
||||||
|
|
||||||
FILE *errFP = nil;
|
FILE *errFP = nil;
|
||||||
HINSTANCE gHInst = NULL; // Instance of this app
|
HINSTANCE gHInst = NULL; // Instance of this app
|
||||||
@ -502,7 +505,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
if (gClient->WindowActive() && gClient->GetInputManager())
|
if (gClient->WindowActive() && gClient->GetInputManager())
|
||||||
gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd);
|
gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd);
|
||||||
}
|
}
|
||||||
break;
|
return TRUE;
|
||||||
case WM_LBUTTONUP:
|
case WM_LBUTTONUP:
|
||||||
case WM_RBUTTONUP:
|
case WM_RBUTTONUP:
|
||||||
case WM_MBUTTONUP:
|
case WM_MBUTTONUP:
|
||||||
@ -514,19 +517,19 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
case WM_KEYUP:
|
case WM_KEYUP:
|
||||||
if (gClient && gClient->WindowActive() && gClient->GetInputManager())
|
if (gClient && gClient->WindowActive() && gClient->GetInputManager())
|
||||||
gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd);
|
gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd);
|
||||||
break;
|
return TRUE;
|
||||||
|
|
||||||
case WM_MOUSEMOVE:
|
case WM_MOUSEMOVE:
|
||||||
{
|
{
|
||||||
if (gClient && gClient->GetInputManager())
|
if (gClient && gClient->GetInputManager())
|
||||||
gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd);
|
gClient->GetInputManager()->HandleWin32ControlEvent(message, wParam, lParam, hWnd);
|
||||||
}
|
}
|
||||||
break;
|
return TRUE;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
case WM_KILLFOCUS:
|
case WM_KILLFOCUS:
|
||||||
SetForegroundWindow(hWnd);
|
SetForegroundWindow(hWnd);
|
||||||
break;
|
return TRUE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case WM_SYSKEYUP:
|
case WM_SYSKEYUP:
|
||||||
@ -538,7 +541,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
}
|
}
|
||||||
//DefWindowProc(hWnd, message, wParam, lParam);
|
//DefWindowProc(hWnd, message, wParam, lParam);
|
||||||
}
|
}
|
||||||
break;
|
return TRUE;
|
||||||
|
|
||||||
case WM_SYSCOMMAND:
|
case WM_SYSCOMMAND:
|
||||||
switch (wParam) {
|
switch (wParam) {
|
||||||
@ -554,9 +557,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
if (plNetClientMgr * mgr = plNetClientMgr::GetInstance())
|
if (plNetClientMgr * mgr = plNetClientMgr::GetInstance())
|
||||||
mgr->QueueDisableNet(false, nil);
|
mgr->QueueDisableNet(false, nil);
|
||||||
DestroyWindow(gClient->GetWindowHandle());
|
DestroyWindow(gClient->GetWindowHandle());
|
||||||
break;
|
return TRUE;
|
||||||
}
|
}
|
||||||
break;
|
return TRUE;
|
||||||
|
|
||||||
case WM_SETCURSOR:
|
case WM_SETCURSOR:
|
||||||
{
|
{
|
||||||
@ -579,9 +582,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
plMouseDevice::HideCursor();
|
plMouseDevice::HideCursor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
break;
|
return TRUE;
|
||||||
|
|
||||||
case WM_ACTIVATE:
|
case WM_ACTIVATE:
|
||||||
{
|
{
|
||||||
@ -601,7 +603,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
gPendingActivateFlag = active;
|
gPendingActivateFlag = active;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
return TRUE;
|
||||||
|
|
||||||
// Let go of the mouse if the window is being moved.
|
// Let go of the mouse if the window is being moved.
|
||||||
case WM_ENTERSIZEMOVE:
|
case WM_ENTERSIZEMOVE:
|
||||||
@ -609,7 +611,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
gDragging = true;
|
gDragging = true;
|
||||||
if( gClient )
|
if( gClient )
|
||||||
gClient->WindowActivate(false);
|
gClient->WindowActivate(false);
|
||||||
break;
|
return TRUE;
|
||||||
|
|
||||||
// Redo the mouse capture if the window gets moved
|
// Redo the mouse capture if the window gets moved
|
||||||
case WM_EXITSIZEMOVE:
|
case WM_EXITSIZEMOVE:
|
||||||
@ -617,7 +619,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
gDragging = false;
|
gDragging = false;
|
||||||
if( gClient )
|
if( gClient )
|
||||||
gClient->WindowActivate(true);
|
gClient->WindowActivate(true);
|
||||||
break;
|
return TRUE;
|
||||||
|
|
||||||
// Redo the mouse capture if the window gets moved (special case for Colin
|
// Redo the mouse capture if the window gets moved (special case for Colin
|
||||||
// and his cool program that bumps windows out from under the taskbar)
|
// and his cool program that bumps windows out from under the taskbar)
|
||||||
@ -629,7 +631,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
DebugMsgF("Got WM_MOVE, but ignoring");
|
DebugMsgF("Got WM_MOVE, but ignoring");
|
||||||
break;
|
return TRUE;
|
||||||
|
|
||||||
/// Resize the window
|
/// Resize the window
|
||||||
// (we do WM_SIZING here instead of WM_SIZE because, for some reason, WM_SIZE is
|
// (we do WM_SIZING here instead of WM_SIZE because, for some reason, WM_SIZE is
|
||||||
@ -644,7 +646,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
::GetClientRect(hWnd, &r);
|
::GetClientRect(hWnd, &r);
|
||||||
gClient->GetPipeline()->Resize(r.right - r.left, r.bottom - r.top);
|
gClient->GetPipeline()->Resize(r.right - r.left, r.bottom - r.top);
|
||||||
}
|
}
|
||||||
break;
|
return TRUE;
|
||||||
|
|
||||||
case WM_SIZE:
|
case WM_SIZE:
|
||||||
// Let go of the mouse if the window is being minimized
|
// Let go of the mouse if the window is being minimized
|
||||||
@ -661,7 +663,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
if (gClient)
|
if (gClient)
|
||||||
gClient->WindowActivate(true);
|
gClient->WindowActivate(true);
|
||||||
}
|
}
|
||||||
break;
|
return TRUE;
|
||||||
|
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
gClient->SetDone(TRUE);
|
gClient->SetDone(TRUE);
|
||||||
@ -677,9 +679,22 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
case WM_CREATE:
|
case WM_CREATE:
|
||||||
// Create renderer
|
// Create renderer
|
||||||
break;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
|
||||||
|
// Messages we registered for manually (no const value)
|
||||||
|
if (message == s_WmTaskbarList)
|
||||||
|
{
|
||||||
|
// Grab the Windows 7 taskbar list stuff
|
||||||
|
if (gTaskbarList)
|
||||||
|
gTaskbarList->Release();
|
||||||
|
HRESULT result = CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_ALL, IID_ITaskbarList3, (void**)&gTaskbarList);
|
||||||
|
if (FAILED(result))
|
||||||
|
gTaskbarList = nil;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PumpMessageQueueProc( void )
|
void PumpMessageQueueProc( void )
|
||||||
|
Reference in New Issue
Block a user