fixed lots of tabs and space

This commit is contained in:
Thomas "elfprince13" Dickerson 2017-01-06 18:04:28 -05:00
parent d30a3f9271
commit bb38a40bcb
53 changed files with 2695 additions and 2695 deletions

View file

@ -52,42 +52,42 @@
IMPLEMENT_CONOBJECT(GuiCanvas);
ConsoleDocClass( GuiCanvas,
"@brief A canvas on which rendering occurs.\n\n"
"@brief A canvas on which rendering occurs.\n\n"
"@section GuiCanvas_contents What a GUICanvas Can Contain...\n\n"
"@section GuiCanvas_contents What a GUICanvas Can Contain...\n\n"
"@subsection GuiCanvas_content_contentcontrol Content Control\n"
"A content control is the top level GuiControl for a screen. This GuiControl "
"will be the parent control for all other GuiControls on that particular "
"screen.\n\n"
"@subsection GuiCanvas_content_contentcontrol Content Control\n"
"A content control is the top level GuiControl for a screen. This GuiControl "
"will be the parent control for all other GuiControls on that particular "
"screen.\n\n"
"@subsection GuiCanvas_content_dialogs Dialogs\n\n"
"@subsection GuiCanvas_content_dialogs Dialogs\n\n"
"A dialog is essentially another screen, only it gets overlaid on top of the "
"current content control, and all input goes to the dialog. This is most akin "
"to the \"Open File\" dialog box found in most operating systems. When you "
"choose to open a file, and the \"Open File\" dialog pops up, you can no longer "
"send input to the application, and must complete or cancel the open file "
"request. Torque keeps track of layers of dialogs. The dialog with the highest "
"layer is on top and will get all the input, unless the dialog is "
"modeless, which is a profile option.\n\n"
"A dialog is essentially another screen, only it gets overlaid on top of the "
"current content control, and all input goes to the dialog. This is most akin "
"to the \"Open File\" dialog box found in most operating systems. When you "
"choose to open a file, and the \"Open File\" dialog pops up, you can no longer "
"send input to the application, and must complete or cancel the open file "
"request. Torque keeps track of layers of dialogs. The dialog with the highest "
"layer is on top and will get all the input, unless the dialog is "
"modeless, which is a profile option.\n\n"
"@see GuiControlProfile\n\n"
"@see GuiControlProfile\n\n"
"@section GuiCanvas_dirty Dirty Rectangles\n\n"
"@section GuiCanvas_dirty Dirty Rectangles\n\n"
"The GuiCanvas is based on dirty regions. "
"Every frame the canvas paints only the areas of the canvas that are 'dirty' "
"or need updating. In most cases, this only is the area under the mouse cursor. "
"This is why if you look in guiCanvas.cc the call to glClear is commented out. "
"What you will see is a black screen, except in the dirty regions, where the "
"screen will be painted normally. If you are making an animated GuiControl "
"you need to add your control to the dirty areas of the canvas.\n\n"
"The GuiCanvas is based on dirty regions. "
"Every frame the canvas paints only the areas of the canvas that are 'dirty' "
"or need updating. In most cases, this only is the area under the mouse cursor. "
"This is why if you look in guiCanvas.cc the call to glClear is commented out. "
"What you will see is a black screen, except in the dirty regions, where the "
"screen will be painted normally. If you are making an animated GuiControl "
"you need to add your control to the dirty areas of the canvas.\n\n"
"@see GuiControl\n\n"
"@see GuiControl\n\n"
"@ingroup GuiCore\n");
"@ingroup GuiCore\n");
ColorI gCanvasClearColor( 255, 0, 255 ); ///< For GFX->clear
@ -209,29 +209,29 @@ bool GuiCanvas::onAdd()
//If we're recording, store the intial video resolution
if (Journal::IsRecording())
{
Journal::Write(vm.resolution.x);
Journal::Write(vm.resolution.y);
Journal::Write(vm.fullScreen);
Journal::Write(vm.resolution.x);
Journal::Write(vm.resolution.y);
Journal::Write(vm.fullScreen);
}
//If we're playing, read the intial video resolution from the journal
if (Journal::IsPlaying())
{
Journal::Read(&vm.resolution.x);
Journal::Read(&vm.resolution.y);
Journal::Read(&vm.fullScreen);
Journal::Read(&vm.resolution.x);
Journal::Read(&vm.resolution.y);
Journal::Read(&vm.fullScreen);
}
if (a && a->mType != NullDevice)
{
mPlatformWindow = WindowManager->createWindow(newDevice, vm);
//Disable window resizing if recording ir playing a journal
if (Journal::IsRecording() || Journal::IsPlaying())
mPlatformWindow->lockSize(true);
// Set a minimum on the window size so people can't break us by resizing tiny.
mPlatformWindow->setMinimumWindowSize(Point2I(640,480));
//Disable window resizing if recording ir playing a journal
if (Journal::IsRecording() || Journal::IsPlaying())
mPlatformWindow->lockSize(true);
// Set a minimum on the window size so people can't break us by resizing tiny.
mPlatformWindow->setMinimumWindowSize(Point2I(640,480));
// Now, we have to hook in our event callbacks so we'll get
// appropriate events from the window.
@ -326,12 +326,12 @@ CanvasSizeChangeSignal GuiCanvas::smCanvasSizeChangeSignal;
void GuiCanvas::handleResize( WindowId did, S32 width, S32 height )
{
getCanvasSizeChangeSignal().trigger(this);
if (Journal::IsPlaying() && mPlatformWindow)
{
mPlatformWindow->lockSize(false);
mPlatformWindow->setSize(Point2I(width, height));
mPlatformWindow->lockSize(true);
}
if (Journal::IsPlaying() && mPlatformWindow)
{
mPlatformWindow->lockSize(false);
mPlatformWindow->setSize(Point2I(width, height));
mPlatformWindow->lockSize(true);
}
// Notify the scripts
if ( isMethod( "onResize" ) )
@ -342,9 +342,9 @@ void GuiCanvas::handlePaintEvent(WindowId did)
{
bool canRender = mPlatformWindow->isVisible() && GFX->allowRender() && !GFX->canCurrentlyRender();
// Do the screenshot first.
// Do the screenshot first.
if ( gScreenShot != NULL && gScreenShot->isPending() && canRender )
gScreenShot->capture( this );
gScreenShot->capture( this );
// If the video capture is waiting for a canvas, start the capture
if ( VIDCAP->isWaitingForCanvas() && canRender )
@ -560,19 +560,19 @@ bool GuiCanvas::tabNext(void)
//save the old
GuiControl *oldResponder = mFirstResponder;
GuiControl* newResponder = ctrl->findNextTabable(mFirstResponder);
GuiControl* newResponder = ctrl->findNextTabable(mFirstResponder);
if ( !newResponder )
newResponder = ctrl->findFirstTabable();
if ( newResponder && newResponder != oldResponder )
{
newResponder->setFirstResponder();
if ( newResponder && newResponder != oldResponder )
{
newResponder->setFirstResponder();
// CodeReview Can this get killed? Note tabPrev code. BJG - 3/25/07
// if ( oldResponder )
// oldResponder->onLoseFirstResponder();
// if ( oldResponder )
// oldResponder->onLoseFirstResponder();
return true;
}
}
}
return false;
}
@ -585,30 +585,30 @@ bool GuiCanvas::tabPrev(void)
//save the old
GuiControl *oldResponder = mFirstResponder;
GuiControl* newResponder = ctrl->findPrevTabable(mFirstResponder);
if ( !newResponder )
GuiControl* newResponder = ctrl->findPrevTabable(mFirstResponder);
if ( !newResponder )
newResponder = ctrl->findLastTabable();
if ( newResponder && newResponder != oldResponder )
{
newResponder->setFirstResponder();
if ( newResponder && newResponder != oldResponder )
{
newResponder->setFirstResponder();
// CodeReview As with tabNext() above, looks like this can now go. DAW - 7/05/09
//if ( oldResponder )
// oldResponder->onLoseFirstResponder();
//if ( oldResponder )
// oldResponder->onLoseFirstResponder();
return true;
}
}
}
return false;
}
bool GuiCanvas::processInputEvent(InputEventInfo &inputEvent)
{
// First call the general input handler (on the extremely off-chance that it will be handled):
if (mFirstResponder && mFirstResponder->onInputEvent(inputEvent))
// First call the general input handler (on the extremely off-chance that it will be handled):
if (mFirstResponder && mFirstResponder->onInputEvent(inputEvent))
{
return(true);
return(true);
}
switch (inputEvent.deviceType)
@ -1786,9 +1786,9 @@ void GuiCanvas::renderFrame(bool preRenderOnly, bool bufferSwap /* = true */)
addUpdateRegion(pos - Point2I(2, 2), Point2I(cext.x + 4, cext.y + 4));
}
mLastCursorEnabled = cursorVisible;
mLastCursor = mouseCursor;
mLastCursorPt = cursorPos;
mLastCursorEnabled = cursorVisible;
mLastCursor = mouseCursor;
mLastCursorPt = cursorPos;
// Begin GFX
PROFILE_START(GFXBeginScene);
@ -1830,7 +1830,7 @@ void GuiCanvas::renderFrame(bool preRenderOnly, bool bufferSwap /* = true */)
resetUpdateRegions();
// Make sure we have a clean matrix state
// Make sure we have a clean matrix state
// before we start rendering anything!
GFX->setWorldMatrix( MatrixF::Identity );
GFX->setViewMatrix( MatrixF::Identity );
@ -2039,46 +2039,46 @@ void GuiCanvas::resetUpdateRegions()
void GuiCanvas::setFirstResponder( GuiControl* newResponder )
{
GuiControl* oldResponder = mFirstResponder;
Parent::setFirstResponder( newResponder );
GuiControl* oldResponder = mFirstResponder;
Parent::setFirstResponder( newResponder );
if( oldResponder == mFirstResponder )
return;
if( oldResponder && ( oldResponder != newResponder ) )
oldResponder->onLoseFirstResponder();
if( oldResponder && ( oldResponder != newResponder ) )
oldResponder->onLoseFirstResponder();
if( newResponder && ( newResponder != oldResponder ) )
newResponder->onGainFirstResponder();
}
DefineEngineMethod( GuiCanvas, getContent, S32, (),,
"@brief Get the GuiControl which is being used as the content.\n\n"
"@brief Get the GuiControl which is being used as the content.\n\n"
"@tsexample\n"
"Canvas.getContent();\n"
"@endtsexample\n\n"
"@tsexample\n"
"Canvas.getContent();\n"
"@endtsexample\n\n"
"@return ID of current content control")
"@return ID of current content control")
{
GuiControl *ctrl = object->getContentControl();
GuiControl *ctrl = object->getContentControl();
if(ctrl)
return ctrl->getId();
return -1;
}
DefineEngineMethod( GuiCanvas, setContent, void, (GuiControl* ctrl),,
"@brief Set the content of the canvas to a specified control.\n\n"
"@brief Set the content of the canvas to a specified control.\n\n"
"@param ctrl ID or name of GuiControl to set content to\n\n"
"@param ctrl ID or name of GuiControl to set content to\n\n"
"@tsexample\n"
"Canvas.setContent(PlayGui);\n"
"@endtsexample\n\n")
"@tsexample\n"
"Canvas.setContent(PlayGui);\n"
"@endtsexample\n\n")
{
// Not using old error reporting until we modify the engineAPI - mperry
// Not using old error reporting until we modify the engineAPI - mperry
//GuiControl *gui = NULL;
//GuiControl *gui = NULL;
// if(argv[2][0])
// {
// if (!Sim::findObject(argv[2], gui))
@ -2088,11 +2088,11 @@ DefineEngineMethod( GuiCanvas, setContent, void, (GuiControl* ctrl),,
// }
// }
if(!ctrl)
{
Con::errorf("GuiCanvas::setContent - Invalid control specified')");
return;
}
if(!ctrl)
{
Con::errorf("GuiCanvas::setContent - Invalid control specified')");
return;
}
//set the new content control
object->setContentControl(ctrl);
@ -2111,11 +2111,11 @@ ConsoleDocFragment _pushDialog(
);
DefineConsoleMethod( GuiCanvas, pushDialog, void, (const char * ctrlName, S32 layer, bool center), ( 0, false), "(GuiControl ctrl, int layer=0, bool center=false)"
"@hide")
"@hide")
{
GuiControl *gui;
if (! Sim::findObject(ctrlName, gui))
if (! Sim::findObject(ctrlName, gui))
{
Con::printf("pushDialog(): Invalid control: %s", ctrlName);
return;
@ -2148,7 +2148,7 @@ ConsoleDocFragment _popDialog2(
);
DefineConsoleMethod( GuiCanvas, popDialog, void, (GuiControl * gui), (nullAsType<GuiControl*>()), "(GuiControl ctrl=NULL)"
"@hide")
"@hide")
{
if (gui)
object->popDialogControl(gui);
@ -2157,160 +2157,160 @@ DefineConsoleMethod( GuiCanvas, popDialog, void, (GuiControl * gui), (nullAsType
}
ConsoleDocFragment _popLayer1(
"@brief Removes the top most layer of dialogs\n\n"
"@tsexample\n"
"Canvas.popLayer();\n"
"@endtsexample\n\n",
"GuiCanvas",
"void popLayer();"
"@brief Removes the top most layer of dialogs\n\n"
"@tsexample\n"
"Canvas.popLayer();\n"
"@endtsexample\n\n",
"GuiCanvas",
"void popLayer();"
);
ConsoleDocFragment _popLayer2(
"@brief Removes a specified layer of dialogs\n\n"
"@param layer Number of the layer to pop\n\n"
"@tsexample\n"
"Canvas.popLayer(1);\n"
"@endtsexample\n\n",
"GuiCanvas",
"void popLayer(S32 layer);"
"@brief Removes a specified layer of dialogs\n\n"
"@param layer Number of the layer to pop\n\n"
"@tsexample\n"
"Canvas.popLayer(1);\n"
"@endtsexample\n\n",
"GuiCanvas",
"void popLayer(S32 layer);"
);
DefineConsoleMethod( GuiCanvas, popLayer, void, (S32 layer), (0), "(int layer)"
"@hide")
"@hide")
{
object->popDialogControl(layer);
}
DefineEngineMethod( GuiCanvas, cursorOn, void, (),,
"@brief Turns on the mouse cursor.\n\n"
"@tsexample\n"
"Canvas.cursorOn();\n"
"@endtsexample\n\n")
"@brief Turns on the mouse cursor.\n\n"
"@tsexample\n"
"Canvas.cursorOn();\n"
"@endtsexample\n\n")
{
object->setCursorON(true);
object->setCursorON(true);
}
DefineEngineMethod( GuiCanvas, cursorOff, void, (),,
"@brief Turns on the mouse off.\n\n"
"@tsexample\n"
"Canvas.cursorOff();\n"
"@endtsexample\n\n")
"@brief Turns on the mouse off.\n\n"
"@tsexample\n"
"Canvas.cursorOff();\n"
"@endtsexample\n\n")
{
object->setCursorON(false);
object->setCursorON(false);
}
DefineEngineMethod( GuiCanvas, setCursor, void, (GuiCursor* cursor),,
"@brief Sets the cursor for the canvas.\n\n"
"@brief Sets the cursor for the canvas.\n\n"
"@param cursor Name of the GuiCursor to use\n\n"
"@param cursor Name of the GuiCursor to use\n\n"
"@tsexample\n"
"Canvas.setCursor(\"DefaultCursor\");\n"
"@endtsexample\n\n")
"@tsexample\n"
"Canvas.setCursor(\"DefaultCursor\");\n"
"@endtsexample\n\n")
{
if(!cursor)
{
Con::errorf("GuiCanvas::setCursor - Invalid GuiCursor name or ID");
return;
}
object->setCursor(cursor);
if(!cursor)
{
Con::errorf("GuiCanvas::setCursor - Invalid GuiCursor name or ID");
return;
}
object->setCursor(cursor);
}
DefineEngineMethod( GuiCanvas, renderFront, void, ( bool enable ),,
"@brief This turns on/off front-buffer rendering.\n\n"
"@brief This turns on/off front-buffer rendering.\n\n"
"@param enable True if all rendering should be done to the front buffer\n\n"
"@param enable True if all rendering should be done to the front buffer\n\n"
"@tsexample\n"
"Canvas.renderFront(false);\n"
"@endtsexample\n\n")
"@tsexample\n"
"Canvas.renderFront(false);\n"
"@endtsexample\n\n")
{
object->setRenderFront(enable);
object->setRenderFront(enable);
}
DefineEngineMethod( GuiCanvas, showCursor, void, (),,
"@brief Enable rendering of the cursor.\n\n"
"@brief Enable rendering of the cursor.\n\n"
"@tsexample\n"
"Canvas.showCursor();\n"
"@endtsexample\n\n")
"@tsexample\n"
"Canvas.showCursor();\n"
"@endtsexample\n\n")
{
object->showCursor(true);
object->showCursor(true);
}
DefineEngineMethod( GuiCanvas, hideCursor, void, (),,
"@brief Disable rendering of the cursor.\n\n"
"@brief Disable rendering of the cursor.\n\n"
"@tsexample\n"
"Canvas.hideCursor();\n"
"@endtsexample\n\n")
"@tsexample\n"
"Canvas.hideCursor();\n"
"@endtsexample\n\n")
{
object->showCursor(false);
object->showCursor(false);
}
DefineEngineMethod( GuiCanvas, isCursorOn, bool, (),,
"@brief Determines if mouse cursor is enabled.\n\n"
"@brief Determines if mouse cursor is enabled.\n\n"
"@tsexample\n"
"// Is cursor on?\n"
"if(Canvas.isCursorOn())\n"
" echo(\"Canvas cursor is on\");\n"
"@endtsexample\n\n"
"@return Returns true if the cursor is on.\n\n")
"@tsexample\n"
"// Is cursor on?\n"
"if(Canvas.isCursorOn())\n"
" echo(\"Canvas cursor is on\");\n"
"@endtsexample\n\n"
"@return Returns true if the cursor is on.\n\n")
{
return object->isCursorON();
return object->isCursorON();
}
DefineEngineMethod( GuiCanvas, isCursorShown, bool, (),,
"@brief Determines if mouse cursor is rendering.\n\n"
"@brief Determines if mouse cursor is rendering.\n\n"
"@tsexample\n"
"// Is cursor rendering?\n"
"if(Canvas.isCursorShown())\n"
" echo(\"Canvas cursor is rendering\");\n"
"@endtsexample\n\n"
"@return Returns true if the cursor is rendering.\n\n")
"@tsexample\n"
"// Is cursor rendering?\n"
"if(Canvas.isCursorShown())\n"
" echo(\"Canvas cursor is rendering\");\n"
"@endtsexample\n\n"
"@return Returns true if the cursor is rendering.\n\n")
{
return object->isCursorShown();
return object->isCursorShown();
}
DefineEngineMethod( GuiCanvas, repaint, void, ( S32 elapsedMS ), (0),
"@brief Force canvas to redraw.\n"
"@brief Force canvas to redraw.\n"
"If the elapsed time is greater than the time since the last paint "
"then the repaint will be skipped.\n"
"@param elapsedMS The optional elapsed time in milliseconds.\n\n"
"@tsexample\n"
"Canvas.repaint();\n"
"@endtsexample\n\n")
"@tsexample\n"
"Canvas.repaint();\n"
"@endtsexample\n\n")
{
object->repaint(elapsedMS < 0 ? 0 : elapsedMS);
object->repaint(elapsedMS < 0 ? 0 : elapsedMS);
}
DefineEngineMethod( GuiCanvas, reset, void, (),,
"@brief Reset the update regions for the canvas.\n\n"
"@brief Reset the update regions for the canvas.\n\n"
"@tsexample\n"
"Canvas.reset();\n"
"@endtsexample\n\n")
"@tsexample\n"
"Canvas.reset();\n"
"@endtsexample\n\n")
{
object->resetUpdateRegions();
object->resetUpdateRegions();
}
DefineEngineMethod( GuiCanvas, getCursorPos, Point2I, (),,
"@brief Get the current position of the cursor in screen-space. Note that this position"
"@brief Get the current position of the cursor in screen-space. Note that this position"
" might be outside the Torque window. If you want to get the position within the Canvas,"
" call screenToClient on the result.\n\n"
"@see Canvas::screenToClient()\n\n"
"@param param Description\n\n"
"@tsexample\n"
"%cursorPos = Canvas.getCursorPos();\n"
"@endtsexample\n\n"
"@return Screen coordinates of mouse cursor, in format \"X Y\"")
"@param param Description\n\n"
"@tsexample\n"
"%cursorPos = Canvas.getCursorPos();\n"
"@endtsexample\n\n"
"@return Screen coordinates of mouse cursor, in format \"X Y\"")
{
return object->getCursorPos();
return object->getCursorPos();
}
ConsoleDocFragment _setCursorPos1(
@ -2334,21 +2334,21 @@ ConsoleDocFragment _setCursorPos2(
);
DefineConsoleMethod( GuiCanvas, setCursorPos, void, (Point2I pos), , "(Point2I pos)"
"@hide")
"@hide")
{
object->setCursorPos(pos);
}
DefineEngineMethod( GuiCanvas, getMouseControl, S32, (),,
"@brief Gets the gui control under the mouse.\n\n"
"@tsexample\n"
"%underMouse = Canvas.getMouseControl();\n"
"@endtsexample\n\n"
"@brief Gets the gui control under the mouse.\n\n"
"@tsexample\n"
"%underMouse = Canvas.getMouseControl();\n"
"@endtsexample\n\n"
"@return ID of the gui control, if one was found. NULL otherwise")
"@return ID of the gui control, if one was found. NULL otherwise")
{
GuiControl* control = object->getMouseControl();
GuiControl* control = object->getMouseControl();
if (control)
return control->getId();
@ -2356,18 +2356,18 @@ DefineEngineMethod( GuiCanvas, getMouseControl, S32, (),,
}
DefineEngineFunction(excludeOtherInstance, bool, (const char* appIdentifer),,
"@brief Used to exclude/prevent all other instances using the same identifier specified\n\n"
"@brief Used to exclude/prevent all other instances using the same identifier specified\n\n"
"@note Not used on OSX, Xbox, or in Win debug builds\n\n"
"@note Not used on OSX, Xbox, or in Win debug builds\n\n"
"@param appIdentifier Name of the app set up for exclusive use.\n"
"@param appIdentifier Name of the app set up for exclusive use.\n"
"@return False if another app is running that specified the same appIdentifier\n\n"
"@return False if another app is running that specified the same appIdentifier\n\n"
"@ingroup Platform\n"
"@ingroup GuiCore")
"@ingroup Platform\n"
"@ingroup GuiCore")
{
// mac/360 can only run one instance in general.
// mac/360 can only run one instance in general.
#if !defined(TORQUE_OS_MAC) && !defined(TORQUE_OS_XENON) && !defined(TORQUE_DEBUG) && !defined(TORQUE_OS_LINUX)
return Platform::excludeOtherInstances(appIdentifer);
#else
@ -2377,82 +2377,82 @@ DefineEngineFunction(excludeOtherInstance, bool, (const char* appIdentifer),,
}
DefineEngineMethod( GuiCanvas, getExtent, Point2I, (),,
"@brief Returns the dimensions of the canvas\n\n"
"@brief Returns the dimensions of the canvas\n\n"
"@tsexample\n"
"%extent = Canvas.getExtent();\n"
"@endtsexample\n\n"
"@tsexample\n"
"%extent = Canvas.getExtent();\n"
"@endtsexample\n\n"
"@return Width and height of canvas. Formatted as numerical values in a single string \"# #\"")
"@return Width and height of canvas. Formatted as numerical values in a single string \"# #\"")
{
return object->getExtent();
return object->getExtent();
}
DefineEngineMethod( GuiCanvas, setWindowTitle, void, ( const char* newTitle),,
"@brief Change the title of the OS window.\n\n"
"@brief Change the title of the OS window.\n\n"
"@param newTitle String containing the new name\n\n"
"@param newTitle String containing the new name\n\n"
"@tsexample\n"
"Canvas.setWindowTitle(\"Documentation Rocks!\");\n"
"@endtsexample\n\n")
"@tsexample\n"
"Canvas.setWindowTitle(\"Documentation Rocks!\");\n"
"@endtsexample\n\n")
{
object->setWindowTitle(newTitle);
object->setWindowTitle(newTitle);
}
DefineEngineMethod( GuiCanvas, findFirstMatchingMonitor, S32, (const char* name),,
"@brief Find the first monitor index that matches the given name.\n\n"
"@brief Find the first monitor index that matches the given name.\n\n"
"The actual match algorithm depends on the implementation.\n"
"@param name The name to search for.\n\n"
"@return The number of monitors attached to the system, including the default monoitor.")
"@return The number of monitors attached to the system, including the default monoitor.")
{
return PlatformWindowManager::get()->findFirstMatchingMonitor(name);
}
DefineEngineMethod( GuiCanvas, getMonitorCount, S32, (),,
"@brief Gets the number of monitors attached to the system.\n\n"
"@brief Gets the number of monitors attached to the system.\n\n"
"@return The number of monitors attached to the system, including the default monoitor.")
"@return The number of monitors attached to the system, including the default monoitor.")
{
return PlatformWindowManager::get()->getMonitorCount();
}
DefineEngineMethod( GuiCanvas, getMonitorName, const char*, (S32 index),,
"@brief Gets the name of the requested monitor.\n\n"
"@brief Gets the name of the requested monitor.\n\n"
"@param index The monitor index.\n\n"
"@return The name of the requested monitor.")
"@return The name of the requested monitor.")
{
return PlatformWindowManager::get()->getMonitorName(index);
}
DefineEngineMethod( GuiCanvas, getMonitorRect, RectI, (S32 index),,
"@brief Gets the region of the requested monitor.\n\n"
"@brief Gets the region of the requested monitor.\n\n"
"@param index The monitor index.\n\n"
"@return The rectangular region of the requested monitor.")
"@return The rectangular region of the requested monitor.")
{
return PlatformWindowManager::get()->getMonitorRect(index);
}
DefineEngineMethod( GuiCanvas, getVideoMode, const char*, (),,
"@brief Gets the current screen mode as a string.\n\n"
"@brief Gets the current screen mode as a string.\n\n"
"The return string will contain 5 values (width, height, fullscreen, bitdepth, refreshRate). "
"You will need to parse out each one for individual use.\n\n"
"The return string will contain 5 values (width, height, fullscreen, bitdepth, refreshRate). "
"You will need to parse out each one for individual use.\n\n"
"@tsexample\n"
"%screenWidth = getWord(Canvas.getVideoMode(), 0);\n"
"%screenHeight = getWord(Canvas.getVideoMode(), 1);\n"
"%isFullscreen = getWord(Canvas.getVideoMode(), 2);\n"
"%bitdepth = getWord(Canvas.getVideoMode(), 3);\n"
"%refreshRate = getWord(Canvas.getVideoMode(), 4);\n"
"@endtsexample\n\n"
"@tsexample\n"
"%screenWidth = getWord(Canvas.getVideoMode(), 0);\n"
"%screenHeight = getWord(Canvas.getVideoMode(), 1);\n"
"%isFullscreen = getWord(Canvas.getVideoMode(), 2);\n"
"%bitdepth = getWord(Canvas.getVideoMode(), 3);\n"
"%refreshRate = getWord(Canvas.getVideoMode(), 4);\n"
"@endtsexample\n\n"
"@return String formatted with screen width, screen height, screen mode, bit depth, and refresh rate.")
"@return String formatted with screen width, screen height, screen mode, bit depth, and refresh rate.")
{
// Grab the video mode.
// Grab the video mode.
if (!object->getPlatformWindow())
return "";
@ -2463,17 +2463,17 @@ DefineEngineMethod( GuiCanvas, getVideoMode, const char*, (),,
DefineEngineMethod( GuiCanvas, getModeCount, S32, (),,
"@brief Gets the number of modes available on this device.\n\n"
"@brief Gets the number of modes available on this device.\n\n"
"@param param Description\n\n"
"@param param Description\n\n"
"@tsexample\n"
"%modeCount = Canvas.getModeCount()\n"
"@endtsexample\n\n"
"@tsexample\n"
"%modeCount = Canvas.getModeCount()\n"
"@endtsexample\n\n"
"@return The number of video modes supported by the device")
"@return The number of video modes supported by the device")
{
if (!object->getPlatformWindow())
if (!object->getPlatformWindow())
return 0;
// Grab the available mode list from the device.
@ -2485,12 +2485,12 @@ DefineEngineMethod( GuiCanvas, getModeCount, S32, (),,
}
DefineEngineMethod( GuiCanvas, getMode, const char*, (S32 modeId),,
"@brief Gets information on the specified mode of this device.\n\n"
"@param modeId Index of the mode to get data from.\n"
"@return A video mode string given an adapter and mode index.\n\n"
"@see GuiCanvas::getVideoMode()")
"@brief Gets information on the specified mode of this device.\n\n"
"@param modeId Index of the mode to get data from.\n"
"@return A video mode string given an adapter and mode index.\n\n"
"@see GuiCanvas::getVideoMode()")
{
if (!object->getPlatformWindow())
if (!object->getPlatformWindow())
return 0;
// Grab the available mode list from the device.
@ -2515,14 +2515,14 @@ DefineEngineMethod( GuiCanvas, getMode, const char*, (S32 modeId),,
DefineEngineMethod( GuiCanvas, toggleFullscreen, void, (),,
"@brief toggle canvas from fullscreen to windowed mode or back.\n\n"
"@brief toggle canvas from fullscreen to windowed mode or back.\n\n"
"@tsexample\n"
"// If we are in windowed mode, the following will put is in fullscreen\n"
"Canvas.toggleFullscreen();"
"@endtsexample\n\n")
"@tsexample\n"
"// If we are in windowed mode, the following will put is in fullscreen\n"
"Canvas.toggleFullscreen();"
"@endtsexample\n\n")
{
if (Platform::getWebDeployment())
if (Platform::getWebDeployment())
return;
if (!object->getPlatformWindow())
@ -2693,7 +2693,7 @@ DefineConsoleMethod( GuiCanvas, setVideoMode, void,
"\\param fullscreen Specify true to run fullscreen or false to run in a window\n"
"\\param bitDepth [optional] The desired bit-depth. Defaults to the current setting. This parameter is ignored if you are running in a window.\n"
"\\param refreshRate [optional] The desired refresh rate. Defaults to the current setting. This parameter is ignored if you are running in a window"
"\\param antialiasLevel [optional] The level of anti-aliasing to apply 0 = none" )
"\\param antialiasLevel [optional] The level of anti-aliasing to apply 0 = none" )
{
if (!object->getPlatformWindow())
return;

View file

@ -716,16 +716,16 @@ void GuiEditCtrl::onRender(Point2I offset, const RectI &updateRect)
ctOffset = getCurrentAddSet()->localToGlobalCoord(Point2I(0,0));
RectI box(ctOffset.x, ctOffset.y, cext.x, cext.y);
box.inset( -5, -5 );
box.inset( -5, -5 );
drawer->drawRect( box, ColorI( 50, 101, 152, 128 ) );
box.inset( 1, 1 );
box.inset( 1, 1 );
drawer->drawRect( box, ColorI( 50, 101, 152, 128 ) );
box.inset( 1, 1 );
box.inset( 1, 1 );
drawer->drawRect( box, ColorI( 50, 101, 152, 128 ) );
box.inset( 1, 1 );
box.inset( 1, 1 );
drawer->drawRect( box, ColorI( 50, 101, 152, 128 ) );
box.inset( 1, 1 );
drawer->drawRect( box, ColorI( 50, 101, 152, 128 ) );
box.inset( 1, 1 );
drawer->drawRect( box, ColorI( 50, 101, 152, 128 ) );
}
Vector<GuiControl *>::iterator i;
bool multisel = mSelectedControls.size() > 1;
@ -2481,16 +2481,16 @@ DefineConsoleMethod( GuiEditCtrl, getContentControl, S32, (), , "() - Return the
DefineConsoleMethod( GuiEditCtrl, setContentControl, void, (GuiControl *ctrl ), , "( GuiControl ctrl ) - Set the toplevel control to edit in the GUI editor." )
{
if (ctrl)
object->setContentControl(ctrl);
if (ctrl)
object->setContentControl(ctrl);
}
//-----------------------------------------------------------------------------
DefineConsoleMethod( GuiEditCtrl, addNewCtrl, void, (GuiControl *ctrl), , "(GuiControl ctrl)")
{
if (ctrl)
object->addNewControl(ctrl);
if (ctrl)
object->addNewControl(ctrl);
}
//-----------------------------------------------------------------------------
@ -2518,7 +2518,7 @@ DefineConsoleMethod( GuiEditCtrl, clearSelection, void, (), , "Clear selected co
DefineConsoleMethod( GuiEditCtrl, select, void, (GuiControl *ctrl), , "(GuiControl ctrl)")
{
if (ctrl)
if (ctrl)
object->setSelection(ctrl, false);
}
@ -2526,7 +2526,7 @@ DefineConsoleMethod( GuiEditCtrl, select, void, (GuiControl *ctrl), , "(GuiContr
DefineConsoleMethod( GuiEditCtrl, setCurrentAddSet, void, (GuiControl *addSet), , "(GuiControl ctrl)")
{
if (addSet)
if (addSet)
object->setCurrentAddSet(addSet);
}

View file

@ -81,8 +81,8 @@ ConsoleDocClass( GuiMenuBar,
"@tsexample\n"
"new GuiMenuBar(newMenuBar)\n"
"{\n"
" Padding = \"0\";\n"
" //Properties not specific to this control have been omitted from this example.\n"
" Padding = \"0\";\n"
" //Properties not specific to this control have been omitted from this example.\n"
"};\n\n"
"// Add a menu to the menu bar\n"
"newMenuBar.addMenu(0,\"New Menu\");\n\n"
@ -105,7 +105,7 @@ IMPLEMENT_CALLBACK( GuiMenuBar, onMouseInMenu, void, (bool isInMenu),( isInMenu
"// Mouse enters or persists within the menu, causing the callback to occur.\n"
"GuiMenuBar::onMouseInMenu(%this,%hasLeftMenu)\n"
"{\n"
" // Code to run when the callback occurs\n"
" // Code to run when the callback occurs\n"
"}\n"
"@endtsexample\n\n"
"@see GuiTickCtrl\n\n"
@ -119,14 +119,14 @@ IMPLEMENT_CALLBACK( GuiMenuBar, onMenuSelect, void, ( S32 menuId, const char* me
"// A menu has been selected, causing the callback to occur.\n"
"GuiMenuBar::onMenuSelect(%this,%menuId,%menuText)\n"
"{\n"
" // Code to run when the callback occurs\n"
" // Code to run when the callback occurs\n"
"}\n"
"@endtsexample\n\n"
"@see GuiTickCtrl\n\n"
);
IMPLEMENT_CALLBACK( GuiMenuBar, onMenuItemSelect, void, ( S32 menuId, const char* menuText, S32 menuItemId, const char* menuItemText ),
( menuId, menuText, menuItemId, menuItemText ),
( menuId, menuText, menuItemId, menuItemText ),
"@brief Called whenever an item in a menu is selected.\n\n"
"@param menuId Index id of the menu which contains the selected menu item\n"
"@param menuText Text of the menu which contains the selected menu item\n\n"
@ -136,7 +136,7 @@ IMPLEMENT_CALLBACK( GuiMenuBar, onMenuItemSelect, void, ( S32 menuId, const char
"// A menu item has been selected, causing the callback to occur.\n"
"GuiMenuBar::onMenuItemSelect(%this,%menuId,%menuText,%menuItemId,%menuItemText)\n"
"{\n"
" // Code to run when the callback occurs\n"
" // Code to run when the callback occurs\n"
"}\n"
"@endtsexample\n\n"
"@see GuiTickCtrl\n\n"
@ -149,7 +149,7 @@ IMPLEMENT_CALLBACK( GuiMenuBar, onSubmenuSelect, void, ( S32 submenuId, const ch
"@tsexample\n"
"GuiMenuBar::onSubmenuSelect(%this,%submenuId,%submenuText)\n"
"{\n"
" // Code to run when the callback occurs\n"
" // Code to run when the callback occurs\n"
"}\n"
"@endtsexample\n\n"
"@see GuiTickCtrl\n\n"
@ -216,7 +216,7 @@ DefineEngineMethod(GuiMenuBar, addMenu, void, (const char* menuText, S32 menuId)
}
DefineEngineMethod(GuiMenuBar, addMenuItem, void, (const char* targetMenu, const char* menuItemText, S32 menuItemId, const char* accelerator, int checkGroup, const char *cmd),
("","",0,nullAsType<const char*>(),-1,""),
("","",0,nullAsType<const char*>(),-1,""),
"@brief Adds a menu item to the specified menu. The menu argument can be either the text of a menu or its id.\n\n"
"@param menu Menu name or menu Id to add the new item to.\n"
"@param menuItemText Text for the new menu item.\n"
@ -637,7 +637,7 @@ DefineEngineMethod(GuiMenuBar, setMenuItemSubmenuState, void, (const char* menuT
}
DefineEngineMethod(GuiMenuBar, addSubmenuItem, void, (const char* menuTarget, const char* menuItem, const char* submenuItemText,
int submenuItemId, const char* accelerator, int checkGroup),,
int submenuItemId, const char* accelerator, int checkGroup),,
"@brief Adds a menu item to the specified menu. The menu argument can be either the text of a menu or its id.\n\n"
"@param menuTarget Menu to affect a submenu in\n"
"@param menuItem Menu item to affect\n"
@ -814,21 +814,21 @@ void GuiMenuBar::addMenu(const char *menuText, U32 menuId)
GuiMenuBar::Menu *GuiMenuBar::findMenu(const char *menu)
{
if(dIsdigit(menu[0]))
{
U32 id = dAtoi(menu);
if(dIsdigit(menu[0]))
{
U32 id = dAtoi(menu);
for (U32 i = 0; i < mMenuList.size(); ++i)
if (id == mMenuList[i]->id)
return mMenuList[i];
return NULL;
}
else
{
return NULL;
}
else
{
for (U32 i = 0; i < mMenuList.size(); ++i)
if (!dStricmp(menu, mMenuList[i]->text))
return mMenuList[i];
return NULL;
}
return NULL;
}
}
GuiMenuBar::MenuItem *GuiMenuBar::findMenuItem(Menu *menu, const char *menuItem)
@ -981,13 +981,13 @@ GuiMenuBar::MenuItem *GuiMenuBar::findSubmenuItem(Menu *menu, const char *menuIt
U32 id = dAtoi(menuItem);
for(MenuItem *walk = menu->firstMenuItem; walk; walk = walk->nextMenuItem)
if(id == walk->id)
{
if(walk->isSubmenu && walk->submenu)
{
{
if(walk->isSubmenu && walk->submenu)
{
return GuiMenuBar::findMenuItem(walk->submenu, submenuItem);
}
return NULL;
}
}
return NULL;
}
return NULL;
}
else
@ -995,13 +995,13 @@ GuiMenuBar::MenuItem *GuiMenuBar::findSubmenuItem(Menu *menu, const char *menuIt
// Search by name
for(MenuItem *walk = menu->firstMenuItem; walk; walk = walk->nextMenuItem)
if(!dStricmp(menuItem, walk->text))
{
if(walk->isSubmenu && walk->submenu)
{
{
if(walk->isSubmenu && walk->submenu)
{
return GuiMenuBar::findMenuItem(walk->submenu, submenuItem);
}
return NULL;
}
}
return NULL;
}
return NULL;
}
}
@ -1021,7 +1021,7 @@ void GuiMenuBar::addSubmenuItem(Menu *menu, MenuItem *submenu, const char *text,
if(submenu && !submenu->isSubmenu)
{
Con::errorf("GuiMenuBar::addSubmenuItem: Attempting to add menuitem '%s' to an invalid submenu",text);
return;
return;
}
// allocate the new menu item
@ -1074,7 +1074,7 @@ void GuiMenuBar::removeSubmenuItem(MenuItem *menuItem, MenuItem *submenuItem)
if(menuItem && !menuItem->isSubmenu)
{
Con::errorf("GuiMenuBar::removeSubmenuItem: Attempting to remove submenuitem '%s' from an invalid submenu",submenuItem->text);
return;
return;
}
GuiMenuBar::removeMenuItem(menuItem->submenu, submenuItem);
@ -1087,7 +1087,7 @@ void GuiMenuBar::clearSubmenuItems(MenuItem *menuitem)
if(menuitem && !menuitem->isSubmenu)
{
Con::errorf("GuiMenuBar::clearSubmenuItems: Attempting to clear an invalid submenu");
return;
return;
}
while(menuitem->submenu->firstMenuItem)
@ -1175,33 +1175,33 @@ void GuiMenuBar::onPreRender()
if (!mMenuList[i]->visible)
continue;
// Bounds depends on if there is a bitmap to be drawn or not
// Bounds depends on if there is a bitmap to be drawn or not
if (mMenuList[i]->bitmapIndex == -1)
{
{
// Text only
mMenuList[i]->bounds.set(curX, 0, mProfile->mFont->getStrWidth(mMenuList[i]->text) + (mHorizontalMargin * 2), getHeight() - (mVerticalMargin * 2));
} else
{
{
// Will the bitmap and text be draw?
if (!mMenuList[i]->drawBitmapOnly)
{
{
// Draw the bitmap and the text
RectI *bitmapBounds = mProfile->mBitmapArrayRects.address();
mMenuList[i]->bounds.set(curX, 0, bitmapBounds[mMenuList[i]->bitmapIndex].extent.x + mProfile->mFont->getStrWidth(mMenuList[i]->text) + (mHorizontalMargin * 2), getHeight() + (mVerticalMargin * 2));
} else
{
} else
{
// Only the bitmap will be drawn
RectI *bitmapBounds = mProfile->mBitmapArrayRects.address();
mMenuList[i]->bounds.set(curX, 0, bitmapBounds[mMenuList[i]->bitmapIndex].extent.x + mBitmapMargin + (mHorizontalMargin * 2), getHeight() + (mVerticalMargin * 2));
}
}
}
}
curX += mMenuList[i]->bounds.extent.x;
}
mouseOverMenu = NULL;
mouseDownMenu = NULL;
mouseOverMenu = NULL;
mouseDownMenu = NULL;
}
}
@ -1222,35 +1222,35 @@ void GuiMenuBar::checkMenuMouseMove(const GuiEvent &event)
void GuiMenuBar::onMouseMove(const GuiEvent &event)
{
Menu *hit = findHitMenu(event.mousePoint);
if(hit != mouseOverMenu)
{
// If we need to, reset the mouse over menu counter and indicate
// that we should track it.
if(hit)
if(hit != mouseOverMenu)
{
// If we need to, reset the mouse over menu counter and indicate
// that we should track it.
if(hit)
mMouseOverCounter = 0;
if(!mCountMouseOver)
{
if(!mCountMouseOver)
{
// We've never started the counter, so start it.
if(hit)
mCountMouseOver = true;
}
}
mouseOverMenu = hit;
setUpdate();
}
mouseOverMenu = hit;
setUpdate();
}
}
void GuiMenuBar::onMouseLeave(const GuiEvent &event)
{
if(mouseOverMenu)
setUpdate();
mouseOverMenu = NULL;
setUpdate();
mouseOverMenu = NULL;
// As we've left the control, don't track how long the mouse has been
// within it.
if(mCountMouseOver && mMouseOverCounter >= mMouseHoverAmount)
{
onMouseInMenu_callback(false); // Last parameter indicates if we've entered or left the menu
onMouseInMenu_callback(false); // Last parameter indicates if we've entered or left the menu
}
mCountMouseOver = false;
mMouseOverCounter = 0;
@ -1259,38 +1259,38 @@ void GuiMenuBar::onMouseLeave(const GuiEvent &event)
void GuiMenuBar::onMouseDragged(const GuiEvent &event)
{
Menu *hit = findHitMenu(event.mousePoint);
if(hit != mouseOverMenu)
{
// If we need to, reset the mouse over menu counter and indicate
// that we should track it.
if(hit)
if(hit != mouseOverMenu)
{
// If we need to, reset the mouse over menu counter and indicate
// that we should track it.
if(hit)
mMouseOverCounter = 0;
if(!mCountMouseOver)
{
if(!mCountMouseOver)
{
// We've never started the counter, so start it.
if(hit)
mCountMouseOver = true;
}
}
mouseOverMenu = hit;
mouseOverMenu = hit;
mouseDownMenu = hit;
setUpdate();
setUpdate();
onAction();
}
}
}
void GuiMenuBar::onMouseDown(const GuiEvent &event)
{
mouseDownMenu = mouseOverMenu = findHitMenu(event.mousePoint);
setUpdate();
setUpdate();
onAction();
}
void GuiMenuBar::onMouseUp(const GuiEvent &event)
{
mouseDownMenu = NULL;
setUpdate();
setUpdate();
}
void GuiMenuBar::onRender(Point2I offset, const RectI &updateRect)
@ -1320,20 +1320,20 @@ void GuiMenuBar::onRender(Point2I offset, const RectI &updateRect)
start.x = mMenuList[i]->bounds.point.x + mHorizontalMargin;
start.y = mMenuList[i]->bounds.point.y + (mMenuList[i]->bounds.extent.y - mProfile->mFont->getHeight()) / 2;
// Draw the border
// Draw the border
if (mMenuList[i]->drawBorder)
{
{
RectI highlightBounds = bounds;
highlightBounds.inset(1,1);
if (mMenuList[i] == mouseDownMenu)
renderFilledBorder(highlightBounds, mProfile->mBorderColorHL, mProfile->mFillColorHL );
else if (mMenuList[i] == mouseOverMenu && mouseDownMenu == NULL)
renderFilledBorder(highlightBounds, mProfile->mBorderColorHL, mProfile->mFillColorHL);
}
}
// Do we draw a bitmap?
// Do we draw a bitmap?
if (mMenuList[i]->bitmapIndex != -1)
{
{
S32 index = mMenuList[i]->bitmapIndex * 3;
if (mMenuList[i] == mouseDownMenu)
++index;
@ -1342,24 +1342,24 @@ void GuiMenuBar::onRender(Point2I offset, const RectI &updateRect)
RectI rect = mProfile->mBitmapArrayRects[index];
Point2I bitmapstart(start);
Point2I bitmapstart(start);
bitmapstart.y = mMenuList[i]->bounds.point.y + (mMenuList[i]->bounds.extent.y - rect.extent.y) / 2;
drawUtil->clearBitmapModulation();
drawUtil->drawBitmapSR( mProfile->mTextureObject, offset + bitmapstart, rect);
// Should we also draw the text?
// Should we also draw the text?
if (!mMenuList[i]->drawBitmapOnly)
{
{
start.x += mBitmapMargin;
drawUtil->setBitmapModulation( fontColor );
drawUtil->drawText(mProfile->mFont, start + offset, mMenuList[i]->text, mProfile->mFontColors);
}
} else
{
}
} else
{
drawUtil->setBitmapModulation( fontColor );
drawUtil->drawText(mProfile->mFont, start + offset, mMenuList[i]->text, mProfile->mFontColors);
}
}
}
renderChildControls( offset, updateRect );
@ -1381,7 +1381,7 @@ void GuiMenuBar::buildWindowAcceleratorMap( WindowInputGenerator &inputGenerator
continue;
}
EventDescriptor accelEvent;
ActionMap::createEventDescriptor(item->accelerator, &accelEvent);
ActionMap::createEventDescriptor(item->accelerator, &accelEvent);
//now we have a modifier, and a key, add them to the canvas
inputGenerator.addAcceleratorKey( this, item->cmd, accelEvent.eventCode, accelEvent.flags);
@ -1412,7 +1412,7 @@ void GuiMenuBar::acceleratorKeyPress(U32 index)
{
// first, call the script callback for menu selection:
onMenuSelect_callback(mMenuList[i]->id, mMenuList[i]->text);
if(item->visible)
menuItemSelected(mMenuList[i], item);
return;
@ -1551,15 +1551,15 @@ void GuiMenuTextListCtrl::onMouseUp(const GuiEvent &event)
void GuiMenuTextListCtrl::onCellHighlighted(Point2I cell)
{
// If this text list control is part of a submenu, then don't worry about
// passing this along
if(!isSubMenu)
{
RectI globalbounds(getBounds());
Point2I globalpoint = localToGlobalCoord(globalbounds.point);
globalbounds.point = globalpoint;
mMenuBarCtrl->highlightedMenuItem(cell.y, globalbounds, mCellSize);
}
// If this text list control is part of a submenu, then don't worry about
// passing this along
if(!isSubMenu)
{
RectI globalbounds(getBounds());
Point2I globalpoint = localToGlobalCoord(globalbounds.point);
globalbounds.point = globalpoint;
mMenuBarCtrl->highlightedMenuItem(cell.y, globalbounds, mCellSize);
}
}
//------------------------------------------------------------------------------
@ -1582,9 +1582,9 @@ bool GuiSubmenuBackgroundCtrl::pointInControl(const Point2I& parentCoordPoint)
S32 yt = parentCoordPoint.y - getTop();
if(findHitControl(Point2I(xt,yt)) == this)
return false;
return false;
else
return true;
return true;
// return xt >= 0 && yt >= 0 && xt < getWidth() && yt < getHeight();
}
@ -1609,7 +1609,7 @@ void GuiMenuBar::onSleep()
void GuiMenuBar::closeMenu()
{
// First close any open submenu
closeSubmenu();
closeSubmenu();
// Get the selection from the text list:
S32 selectionIndex = mTextList->getSelectedCell().y;
@ -1657,25 +1657,25 @@ void GuiMenuBar::highlightedMenuItem(S32 selectionIndex, const RectI& bounds, Po
}
if(list)
{
{
// If the highlighted item has changed...
if(mouseOverSubmenu != list)
{
{
closeSubmenu();
mouseOverSubmenu = NULL;
// Check if this is a submenu. If so, open the submenu.
if(list->isSubmenu)
{
// If there are submenu items, then open the submenu
{
// If there are submenu items, then open the submenu
if(list->submenu->firstMenuItem)
{
mouseOverSubmenu = list;
onSubmenuAction(selstore, bounds, cellSize);
}
}
}
}
{
mouseOverSubmenu = list;
onSubmenuAction(selstore, bounds, cellSize);
}
}
}
}
}
}
@ -1745,11 +1745,11 @@ void GuiMenuBar::onAction()
char buf[512];
// If this menu item is a submenu, then set the isSubmenu to 2 to indicate
// an arrow should be drawn. Otherwise set the isSubmenu normally.
char isSubmenu = 1;
if(walk->isSubmenu)
isSubmenu = 2;
// If this menu item is a submenu, then set the isSubmenu to 2 to indicate
// an arrow should be drawn. Otherwise set the isSubmenu normally.
char isSubmenu = 1;
if(walk->isSubmenu)
isSubmenu = 2;
char bitmapIndex = 1;
if(walk->bitmapIndex >= 0 && (walk->bitmapIndex * 3 <= mProfile->mBitmapArrayRects.size()))
@ -1861,8 +1861,8 @@ void GuiMenuBar::onSubmenuAction(S32 selectionIndex, const RectI& bounds, Point2
char buf[512];
// Can't have submenus within submenus.
char isSubmenu = 1;
// Can't have submenus within submenus.
char isSubmenu = 1;
char bitmapIndex = 1;
if(walk->bitmapIndex >= 0 && (walk->bitmapIndex * 3 <= mProfile->mBitmapArrayRects.size()))
@ -1916,7 +1916,7 @@ void GuiMenuBar::onSubmenuAction(S32 selectionIndex, const RectI& bounds, Point2
void GuiMenuBar::closeSubmenu()
{
if(!mSubmenuBackground || !mSubmenuTextList)
return;
return;
// Get the selection from the text list:
S32 selectionIndex = mSubmenuTextList->getSelectedCell().y;
@ -1934,8 +1934,8 @@ void GuiMenuBar::closeSubmenu()
if ( selectionIndex != -1 )
{
MenuItem *list = NULL;
if(mouseOverSubmenu)
{
if(mouseOverSubmenu)
{
list = mouseOverSubmenu->submenu->firstMenuItem;
while(selectionIndex && list)
@ -1943,7 +1943,7 @@ void GuiMenuBar::closeSubmenu()
list = list->nextMenuItem;
selectionIndex--;
}
}
}
if(list)
menuItemSelected(list->submenuParentMenu, list);
}
@ -1981,13 +1981,13 @@ void GuiMenuBar::processTick()
{
// If we're at a particular number of ticks, notify the script function
if(mMouseOverCounter < mMouseHoverAmount)
{
{
++mMouseOverCounter;
} else if(mMouseOverCounter == mMouseHoverAmount)
{
} else if(mMouseOverCounter == mMouseHoverAmount)
{
++mMouseOverCounter;
onMouseInMenu_callback(true); // Last parameter indicates if we've entered or left the menu
}
onMouseInMenu_callback(true); // Last parameter indicates if we've entered or left the menu
}
}
}