summaryrefslogtreecommitdiff
path: root/indra/llwindow/llwindowmacosx-objc.h
AgeCommit message (Collapse)Author
2016-06-30DRTVWR-418: Unify control flow through LLAppViewer across platforms.Nat Goodspeed
The LLApp API used to consist of init(), mainLoop(), cleanup() methods. This makes sense -- but on Mac that structure was being subverted. The method called mainLoop() was in fact being called once per frame. There was initialization code in the method, which (on Mac) needed to be skipped with an already-initialized bool. There was a 'while' loop which (on Mac) needed to be turned into an 'if' instead so the method would return after every frame. Rename LLApp::mainLoop() to frame(). Propagate through subclasses LLAppViewer and LLCrashLogger. Document the fact that frame() returns true to mean "done." (This was always the case, but had to be inferred from the code.) Rename the Mac Objective-C function mainLoop to oneFrame. Rename the C++ free function it calls from runMainLoop() to pumpMainLoop(). Add comments to llappdelegate-objc.mm explaining (inferred) control flow. Change the Linux viewer main() and the Windows viewer WINMAIN() from a single LLAppViewer::mainLoop() call to repeatedly call frame() until it returns true. Move initialization code from the top of LLAppViewer::frame() to the init() method, where it more properly belongs. Remove corresponding mMainLoopInitialized flag (and all references) from LLAppViewer. Remove 'while (! LLApp::isExiting())' (or on Mac, 'if (! LLApp::isExiting())') from LLAppViewer::frame() -- thus unindenting the whole body of the 'while' and causing many lines of apparent change. (Apologies to reviewers.) There are four LLApp states: APP_STATUS_RUNNING, APP_STATUS_QUITTING, APP_STATUS_STOPPED and APP_STATUS_ERROR. Change LLAppViewer::frame() return value from (isExiting()) (QUITTING or ERROR) to (! isRunning()). I do not know under what circumstances the state might transition to STOPPED during a frame() call, but I'm quite sure that if it does, we don't want to call frame() again. We only want a subsequent call if the state is RUNNING. Also rename mainLoop() method in LLCrashLogger subclasses LLCrashLoggerWindows, LLCrashLoggerMac, LLCrashLoggerLinux. Of course it's completely up to the frame() method whether to yield control; none of those in fact do. Honor protocol by returning true (frame() is done), even though each one's main() caller ignores the return value. In fact LLCrashLoggerWindows::mainLoop() wasn't using the return protocol correctly anyway, returning wParam or 0 or 1 -- possibly because the return protocol was never explicitly documented. It should always return true: "I'm done, don't call me again."
2016-05-06merge 4.0.4-release and MAINT-5974Oz Linden
2016-04-21Merged in cinderblocks/storm-2127AndreyL ProductEngine
2016-04-20STORM-2127 - Fix NSException when assigning values that don't exist in cocoa ↵Cinder
modifier key event.
2016-03-29MAINT-6239 [Mac] Computer cursor appears attached to crosshair after using ↵Mnikolenko ProductEngine
modifier keys in mouselook
2016-03-21MAINT-3171 Alt-clicking while moving mouse can move the camera significantlyMnikolenko ProductEngine
2016-01-15merge changes for 4.0.1-releaseOz Linden
2015-11-13Encode keyboard event for reconstruction in the plugin.rider
2015-11-10remove execute permission from many files that should not have itOz Linden
2015-11-06MAINT-5754: Basic keyboard functionality on the Mac. Still incompleterider
2015-04-24MAINT-5106 FIXED [MAC] if SL viewer is not running, clicking on SLURL ↵pavelk_productengine
launches viewer, BUT start location is not set
2014-09-11MAINT-3569 FIXED Handle window hide/unhide and minimize/unminimize events on ↵Mnikolenko ProductEngine
mac.
2013-12-17Mac Fullscreen fix for MAINT-3288 and MAINT-3135Aura Linden
2013-10-03merge changes for 3.6.7-releaseOz Linden
2013-09-26MAINT-3155 add cocoa equiv for former AppleEventManager shenanigans for ↵Graham Madarasz (Graham Linden)
SLURL handling
2013-09-11OPEN-189 Add missing header guardDrake Arconis
2013-07-11Alert box support!Geenz
2013-07-11STORM-1942: dock icon bouncing unimplementedGeenz
2013-06-17This seems to be on par with viewer-release at this point.Geenz
2013-06-17Have showInputWindow hand off input events to the bottom line input window.Geenz
2013-06-17Insert text into the input window when we attempt to insert text without a ↵Geenz
pre-editor. Also handle backspace as a special case when determining if the input window needs to be displayed.
2013-05-23Only show the input window when we attempt to add marked text, *and* we ↵Geenz
can't submit marked text directly to the viewer.
2013-05-13Merged with https://bitbucket.org/lindenlab/viewer-betaGeenz
2013-04-07Support the committing of the current pre edit string when language input is ↵Geenz
interrupted per the viewer's original pre edit functionality.
2013-04-01First pass at adding a viable replacement for TSM's old UseInputWindow ↵Geenz
method (which is now deprecated with seemingly no Cocoa replacement).
2013-03-29Update Mac and Windows breakpad builds to latestGraham Madarasz
2013-03-27IME support is pretty much finished at this point.Geenz
2013-03-25Additional IME support. LLPreeditor is largely good to go at this point, ↵Geenz
but there's still some work to do in getSegments.
2013-03-19More LLPreeditor work.Geenz
2013-03-11MergeGeenz
2013-03-11Bug fixing and prep-work for IME support (along with refactored text input ↵Geenz
in general).
2013-02-27For MAINT-2404 Fixes detection of VRAM on OSX removed along with other AGL ↵Graham Madarasz (Graham Linden)
code. Code Review: callum
2013-02-26Setup the quit handler for when the user attempts to close the window. This ↵Geenz
restores the previous functionality of asking the user if they want to quit.
2013-02-25Fix for antialiasing and VSync not being enabled properly.Geenz
2013-02-22Fix inconsistent handling of Control, Alt, and Shift keys through a new ↵Geenz
modifier update callback.
2013-01-22Initial Cocoa drag and drop support.Geenz
2013-01-08Big change set:Geenz
- LLAppDelegate header relocated to LLWindow. Definition is still present in secondlife-bin (for compatibility reasons when loading a nib). - Return key handling fixed. - Command key now acts the same as the control key by issuing control character codes when the command key is pressed. - We now retrieve the window pointer directly from the app delegate in LLWindow.
2013-01-02Fixed the enter and return keys not being sent appropriately as unicode ↵Geenz
characters.
2013-01-01More things in this commit:Geenz
- Removed the callback system in favor of simply defining functions in a header to later be implemented in whichever file is most convenient for what we want to do (i.e., calling LLWindow callbacks within LLWindowMacOSX, setting cursors in llwindowmacosx-objc.mm, etc.) - Viewer shutdown now works appropriately - Added a bit of debugging code to test if a key has been handled by the UI or not (useful for tracking down the mystery of the enter key not being handled) - Setup a cocoa quit handler within the application delegate that intercepts any termination requests
2012-12-29Huge amount of refactoring to use Cocoa here:Geenz
- Updated to .xib format. To produce a new nib (which is required after changing the xib file), use "ibtool SecondLife.xib --compile SecondLife.nib" within the newview directory. - xib file now defines the viewer's window. VIews are still being pragmatically added to the main window. This may change in the future. - LLAppViewer's main loop has been slightly refactored to be executed on a timer for OS X. This probably needs a bit more work. - Event handling still needs more work to work within a timer based event loop. It works fairly sporadically at the moment, as if events are being dropped between timer executions, at least for the mouse. - Carbon has been purged from the viewer's startup, and from LLWindow entirely. There's likely still a few odds and ends fragmented throughout the viewer and its dependencies. Need to track these down. - LLAppViewerMacOSX now uses NSApplicationMain, and also implements the NSApplicationDelegate protocol in LLAppDelegate. - Fullscreen support has been implemented for OS X 10.7+ This is still a work in progress, however at this stage everything needed for a functional viewer is (mostly) complete. From here, it's mostly just bug hunting and fixing.
2012-12-17LLWindow: Move to using Cocoa for window and view creation along with ↵Geenz
setting up callbacks for event handling as such.
2010-08-13Change license from GPL to LGPL (version 2.1)Oz Linden
2010-03-18Backed out changeset f4c0761897c6 EXT-4820([NUX] Viewer dimensions on ↵Igor Borovkov
first-run) by which "moved LLDisplayInfo to llwindow, implemented getting the width/height of screen for mac os and linux." --HG-- branch : product-engine
2010-03-05Working on major bug EXT-4820([NUX] Viewer dimensions on first-run) - moved ↵Eugene Mutavchi
LLDisplayInfo to llwindow, implemented getting the width/height of screen for mac os and linux. --HG-- branch : product-engine
2009-01-08Result of svn merge -r107256:107258 ↵Aaron Brashears
svn+ssh://svn/svn/user/phoenix/license_2009_merge into trunk. QAR-1165
2007-10-04Result of svn merge -r71162:71205 ↵Aaron Brashears
svn+ssh://svn/svn/linden/branches/new-license into release. only changes files which are not deployed or the comments section of code.
2007-01-02Print done when done.James Cook