LLWindow V3 partial merge. Includes Most everything sans new LLMouseHandler which requires some messy changes in llviewerwindow that are best left for a dedicated commit. Also, some translation fluff was skipped for now.

This commit is contained in:
Shyotl
2011-08-29 03:44:17 -05:00
parent c129a1a923
commit baddb47c44
58 changed files with 1937 additions and 504 deletions

View File

@@ -46,14 +46,11 @@
#include "llerror.h"
#include "llkeyboard.h"
#include "linked_lists.h"
//static instance for default callbacks
LLWindowCallbacks LLWindow::sDefaultCallbacks;
#include "llwindowcallbacks.h"
//
// LLWindowCallbacks
//
LLSplashScreen *gSplashScreenp = NULL;
BOOL gDebugClicks = FALSE;
BOOL gDebugWindowProc = FALSE;
@@ -67,158 +64,6 @@ const std::string gURLProtocolWhitelist[] = { "file:", "http:", "https:" };
// Important - these lists should match - protocol to handler
const std::string gURLProtocolWhitelistHandler[] = { "http", "http", "https" };
BOOL LLWindowCallbacks::handleTranslatedKeyDown(const KEY key, const MASK mask, BOOL repeated)
{
return FALSE;
}
BOOL LLWindowCallbacks::handleTranslatedKeyUp(const KEY key, const MASK mask)
{
return FALSE;
}
void LLWindowCallbacks::handleScanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_level)
{
}
BOOL LLWindowCallbacks::handleUnicodeChar(llwchar uni_char, MASK mask)
{
return FALSE;
}
BOOL LLWindowCallbacks::handleMouseDown(LLWindow *window, const LLCoordGL pos, MASK mask)
{
return FALSE;
}
BOOL LLWindowCallbacks::handleMouseUp(LLWindow *window, const LLCoordGL pos, MASK mask)
{
return FALSE;
}
void LLWindowCallbacks::handleMouseLeave(LLWindow *window)
{
return;
}
BOOL LLWindowCallbacks::handleCloseRequest(LLWindow *window)
{
//allow the window to close
return TRUE;
}
void LLWindowCallbacks::handleQuit(LLWindow *window)
{
if(LLWindowManager::destroyWindow(window) == FALSE)
{
llerrs << "LLWindowCallbacks::handleQuit() : Couldn't destroy window" << llendl;
}
}
BOOL LLWindowCallbacks::handleRightMouseDown(LLWindow *window, const LLCoordGL pos, MASK mask)
{
return FALSE;
}
BOOL LLWindowCallbacks::handleRightMouseUp(LLWindow *window, const LLCoordGL pos, MASK mask)
{
return FALSE;
}
BOOL LLWindowCallbacks::handleMiddleMouseDown(LLWindow *window, const LLCoordGL pos, MASK mask)
{
return FALSE;
}
BOOL LLWindowCallbacks::handleMiddleMouseUp(LLWindow *window, const LLCoordGL pos, MASK mask)
{
return FALSE;
}
BOOL LLWindowCallbacks::handleActivate(LLWindow *window, BOOL activated)
{
return FALSE;
}
BOOL LLWindowCallbacks::handleActivateApp(LLWindow *window, BOOL activating)
{
return FALSE;
}
void LLWindowCallbacks::handleMouseMove(LLWindow *window, const LLCoordGL pos, MASK mask)
{
}
void LLWindowCallbacks::handleScrollWheel(LLWindow *window, S32 clicks)
{
}
void LLWindowCallbacks::handleResize(LLWindow *window, const S32 width, const S32 height)
{
}
void LLWindowCallbacks::handleFocus(LLWindow *window)
{
}
void LLWindowCallbacks::handleFocusLost(LLWindow *window)
{
}
void LLWindowCallbacks::handleMenuSelect(LLWindow *window, const S32 menu_item)
{
}
BOOL LLWindowCallbacks::handlePaint(LLWindow *window, const S32 x, const S32 y,
const S32 width, const S32 height)
{
return FALSE;
}
BOOL LLWindowCallbacks::handleDoubleClick(LLWindow *window, const LLCoordGL pos, MASK mask)
{
return FALSE;
}
void LLWindowCallbacks::handleWindowBlock(LLWindow *window)
{
}
void LLWindowCallbacks::handleWindowUnblock(LLWindow *window)
{
}
void LLWindowCallbacks::handleDataCopy(LLWindow *window, S32 data_type, void *data)
{
}
BOOL LLWindowCallbacks::handleTimerEvent(LLWindow *window)
{
return FALSE;
}
BOOL LLWindowCallbacks::handleDeviceChange(LLWindow *window)
{
return FALSE;
}
void LLWindowCallbacks::handlePingWatchdog(LLWindow *window, const char * msg)
{
}
void LLWindowCallbacks::handlePauseWatchdog(LLWindow *window)
{
}
void LLWindowCallbacks::handleResumeWatchdog(LLWindow *window)
{
}
S32 OSMessageBox(const std::string& text, const std::string& caption, U32 type)
{
@@ -257,8 +102,8 @@ S32 OSMessageBox(const std::string& text, const std::string& caption, U32 type)
// LLWindow
//
LLWindow::LLWindow(BOOL fullscreen, U32 flags)
: mCallbacks(&sDefaultCallbacks),
LLWindow::LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags)
: mCallbacks(callbacks),
mPostQuit(TRUE),
mFullscreen(fullscreen),
mFullscreenWidth(0),
@@ -277,7 +122,23 @@ LLWindow::LLWindow(BOOL fullscreen, U32 flags)
mHighSurrogate(0)
{
}
LLWindow::~LLWindow()
{
}
//virtual
BOOL LLWindow::isValid()
{
return TRUE;
}
//virtual
BOOL LLWindow::canDelete()
{
return TRUE;
}
// virtual
void LLWindow::incBusyCount()
{
@@ -293,13 +154,28 @@ void LLWindow::decBusyCount()
}
}
void LLWindow::setCallbacks(LLWindowCallbacks *callbacks)
//virtual
void LLWindow::resetBusyCount()
{
mCallbacks = callbacks;
if (gKeyboard)
{
gKeyboard->setCallbacks(callbacks);
}
mBusyCount = 0;
}
//virtual
S32 LLWindow::getBusyCount() const
{
return mBusyCount;
}
//virtual
ECursorType LLWindow::getCursor() const
{
return mCurrentCursor;
}
//virtual
BOOL LLWindow::dialogColorPicker(F32 *r, F32 *g, F32 *b)
{
return FALSE;
}
void *LLWindow::getMediaWindow()
@@ -462,23 +338,7 @@ void LLSplashScreen::hide()
static std::set<LLWindow*> sWindowList;
LLWindow* LLWindowManager::createWindow(
const std::string& title,
const std::string& name,
LLCoordScreen upper_left,
LLCoordScreen size,
U32 flags,
BOOL fullscreen,
BOOL clearBg,
BOOL disable_vsync,
BOOL use_gl,
BOOL ignore_pixel_depth)
{
return createWindow(
title, name, upper_left.mX, upper_left.mY, size.mX, size.mY, flags,
fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth);
}
LLWindow* LLWindowManager::createWindow(
LLWindowCallbacks* callbacks,
const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, U32 flags,
BOOL fullscreen,
BOOL clearBg,
@@ -492,26 +352,26 @@ LLWindow* LLWindowManager::createWindow(
if (use_gl)
{
#if LL_MESA_HEADLESS
new_window = new LLWindowMesaHeadless(
new_window = new LLWindowMesaHeadless(callbacks,
title, name, x, y, width, height, flags,
fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth);
#elif LL_SDL
new_window = new LLWindowSDL(
new_window = new LLWindowSDL(callbacks,
title, x, y, width, height, flags,
fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth, fsaa_samples);
#elif LL_WINDOWS
new_window = new LLWindowWin32(
new_window = new LLWindowWin32(callbacks,
title, name, x, y, width, height, flags,
fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth, fsaa_samples);
#elif LL_DARWIN
new_window = new LLWindowMacOSX(
new_window = new LLWindowMacOSX(callbacks,
title, name, x, y, width, height, flags,
fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth, fsaa_samples);
#endif
}
else
{
new_window = new LLWindowHeadless(
new_window = new LLWindowHeadless(callbacks,
title, name, x, y, width, height, flags,
fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth);
}