summaryrefslogtreecommitdiff
path: root/indra/newview/lltoast.h
AgeCommit message (Collapse)Author
2024-08-28Merge branch 'main' into release/luau-scripting.Nat Goodspeed
2024-05-23Remove commented-out methods in a couple LLEventTimer subclasses.Nat Goodspeed
2024-05-22Fix line endlingsAnsariel
2024-05-22Merge remote-tracking branch 'origin/main' into DRTVWR-600-maint-AAnsariel
# Conflicts: # autobuild.xml # indra/cmake/CMakeLists.txt # indra/cmake/GoogleMock.cmake # indra/llaudio/llaudioengine_fmodstudio.cpp # indra/llaudio/llaudioengine_fmodstudio.h # indra/llaudio/lllistener_fmodstudio.cpp # indra/llaudio/lllistener_fmodstudio.h # indra/llaudio/llstreamingaudio_fmodstudio.cpp # indra/llaudio/llstreamingaudio_fmodstudio.h # indra/llcharacter/llmultigesture.cpp # indra/llcharacter/llmultigesture.h # indra/llimage/llimage.cpp # indra/llimage/llimagepng.cpp # indra/llimage/llimageworker.cpp # indra/llimage/tests/llimageworker_test.cpp # indra/llmessage/tests/llmockhttpclient.h # indra/llprimitive/llgltfmaterial.h # indra/llrender/llfontfreetype.cpp # indra/llui/llcombobox.cpp # indra/llui/llfolderview.cpp # indra/llui/llfolderviewmodel.h # indra/llui/lllineeditor.cpp # indra/llui/lllineeditor.h # indra/llui/lltextbase.cpp # indra/llui/lltextbase.h # indra/llui/lltexteditor.cpp # indra/llui/lltextvalidate.cpp # indra/llui/lltextvalidate.h # indra/llui/lluictrl.h # indra/llui/llview.cpp # indra/llwindow/llwindowmacosx.cpp # indra/newview/app_settings/settings.xml # indra/newview/llappearancemgr.cpp # indra/newview/llappearancemgr.h # indra/newview/llavatarpropertiesprocessor.cpp # indra/newview/llavatarpropertiesprocessor.h # indra/newview/llbreadcrumbview.cpp # indra/newview/llbreadcrumbview.h # indra/newview/llbreastmotion.cpp # indra/newview/llbreastmotion.h # indra/newview/llconversationmodel.h # indra/newview/lldensityctrl.cpp # indra/newview/lldensityctrl.h # indra/newview/llface.inl # indra/newview/llfloatereditsky.cpp # indra/newview/llfloatereditwater.cpp # indra/newview/llfloateremojipicker.h # indra/newview/llfloaterimsessiontab.cpp # indra/newview/llfloaterprofiletexture.cpp # indra/newview/llfloaterprofiletexture.h # indra/newview/llgesturemgr.cpp # indra/newview/llgesturemgr.h # indra/newview/llimpanel.cpp # indra/newview/llimpanel.h # indra/newview/llinventorybridge.cpp # indra/newview/llinventorybridge.h # indra/newview/llinventoryclipboard.cpp # indra/newview/llinventoryclipboard.h # indra/newview/llinventoryfunctions.cpp # indra/newview/llinventoryfunctions.h # indra/newview/llinventorygallery.cpp # indra/newview/lllistbrowser.cpp # indra/newview/lllistbrowser.h # indra/newview/llpanelobjectinventory.cpp # indra/newview/llpanelprofile.cpp # indra/newview/llpanelprofile.h # indra/newview/llpreviewgesture.cpp # indra/newview/llsavedsettingsglue.cpp # indra/newview/llsavedsettingsglue.h # indra/newview/lltooldraganddrop.cpp # indra/newview/llurllineeditorctrl.cpp # indra/newview/llvectorperfoptions.cpp # indra/newview/llvectorperfoptions.h # indra/newview/llviewerparceloverlay.cpp # indra/newview/llviewertexlayer.cpp # indra/newview/llviewertexturelist.cpp # indra/newview/macmain.h # indra/test/test.cpp
2024-05-15Manual whitespace cleanup (fix_whitespace.py).Nat Goodspeed
2024-05-02WIP: In llcallbacklist.h, add singleton LLLater for time delays.Nat Goodspeed
The big idea is to reduce the number of per-tick callbacks asking, "Is it time yet? Is it time yet?" We do that for LLEventTimer and LLEventTimeout. LLLater presents doAtTime(LLDate), with doAfterInterval() and doPeriodically() methods implemented using doAtTime(). All return handles. The free functions doAfterInterval() and doPeriodically() now forward to the corresponding LLLater methods. LLLater also presents isRunning(handle) and cancel(handle). LLLater borrows the tactic of LLEventTimer: while there's at least one running timer, it registers an LLCallbackList tick() callback to service ready timers. But instead of looping over all of them asking, "Are you ready?" it keeps them in a priority queue ordered by desired timestamp, and only touches those whose timestamp has been reached. Also, it honors a maximum time slice: once the ready timers have run for longer than the limit, it defers processing other ready timers to the next tick() call. The intent is to consume fewer cycles per tick() call, both by the management machinery and the timers themselves. Revamp LLCallbackList to accept C++ callables in addition to (classic C function pointer, void*) pairs. Make addFunction() return a handle (different than LLLater handles) that can be passed to a new deleteFunction() overload, since std::function instances can't be compared for equality. In fact, implement LLCallbackList using boost::signals2::signal, which provides almost exactly what we want. LLCallbackList continues to accept (function pointer, void*) pairs, but now we store a lambda that calls the function pointer with that void*. It takes less horsing around to create a C++ callable from a (function pointer, void*) pair than the other way around. For containsFunction() and deleteFunction(), such pairs are the keys for a lookup table whose values are handles. Instead of having a static global LLCallbackList gIdleCallbacks, make LLCallbackList an LLSingleton to guarantee initialization. For backwards compatibility, gIdleCallbacks is now a macro for LLCallbackList::instance(). Move doOnIdleOneTime() and doOnIdleRepeating() functions to LLCallbackList methods, but for backwards compatibility continue providing free functions. Reimplement LLEventTimer using LLLater::doPeriodically(). One implication is that LLEventTimer need no longer be derived from LLInstanceTracker, which we used to iterate over all instances every tick. Give it start() and stop() methods, since some subclasses (e.g. LLFlashTimer) used to call its member LLTimer's start() and stop(). Remove updateClass(): LLCallbackList::callFunctions() now takes care of that. Remove LLToastLifeTimer::start() and stop(), since LLEventTimer now provides those. Remove getRemainingTimeF32(), since LLLater does not (yet) provide that feature. While at it, make LLEventTimer::tick() return bool instead of BOOL, and change existing overrides. Make LLApp::stepFrame() call LLCallbackList::callFunctions() instead of LLEventTimer::updateClass(). We could have refactored LLEventTimer to use the mechanism now built into LLLater, but frankly the LLEventTimer API is rather clumsy. You MUST derive a subclass and override tick(), and you must instantiate your subclass on the heap because, when your tick() override returns false, LLEventTimer deletes its subclass instance. The LLLater API is simpler to use, and LLEventTimer is much simplified by using it. Merge lleventfilter.h's LLEventTimeoutBase into LLEventTimeout, and likewise merge LLEventThrottleBase into LLEventThrottle. The separation was for testability, but now that they're no longer based on LLTimer, it becomes harder to use dummy time for testing. Temporarily skip tests based on LLEventTimeoutBase and LLEventThrottleBase. Instead of listening for LLEventPump("mainloop") ticks and using LLTimer, LLEventTimeout now uses LLLater::doAfterInterval(). Instead of LLTimer and LLEventTimeout, LLEventThrottle likewise now uses LLLater::doAfterInterval(). Recast a couple local LLEventTimeout pre-lambda callable classes with lambdas. Dignify F64 with a new typedef LLDate::timestamp. LLDate heavily depends on that as its base time representation, but there are those who question use of floating-point for time. This is a step towards insulating us from any future change.
2024-04-29#824 Process source files in bulk: replace tabs with spaces, convert CRLF to ↵Andrey Lihatskiy
LF, and trim trailing whitespaces as needed
2024-02-21Convert remaining BOOL to boolAnsariel
2024-02-21Convert BOOL to bool in lluiAnsariel
2024-02-18Replace BOOL with bool in llwindow and dependent classesAnsariel
2024-02-12more misc: BOOL (int) to real boolLars Næsbye Christensen
2022-08-26DRTVWR-568: Eliminate more blockers to C++17 language standard.Nat Goodspeed
2018-05-22MAINT-8635 Don't allow using 'close all windows' if modal toast is openmaxim_productengine
2016-07-08MAINT-6448 PERMISSION_DEBIT notification should default to Denyandreykproductengine
2015-11-10remove execute permission from many files that should not have itOz Linden
2013-05-09Merge downstream code and viewer-betasimon
2013-04-24Follow-up code cleaning for LLToast work trying to get branch healthy.simon
Reviewed by Kelly
2013-04-24diff -r 59c7bed66dfd indra/llcommon/lleventapi.hsimon
2013-03-29Update Mac and Windows breakpad builds to latestGraham Madarasz
2013-03-19Merge in viewer-beta to get CHUI codeSimon Linden
2013-02-28Modify LLInstanceTracker to avoid using a map of strings to find a map of ↵Graham Madarasz (Graham)
foo to find some pointers
2012-05-18CHUI-112 FIX Clicking Show or Discard in an inventory offer toast does not ↵Richard Linden
dismiss toast removed special case logic for dealing with user online/offline collisions added ability to cancel old duplicate notifications
2012-02-01EXP-1672 FIXED Various fixes to prevent crashes in notifications.Seth ProductEngine
- Refactoring of LLToast and LLScreenChannel classes: moved LLToast signals to the private section. - Modified the screen channel's lists of toasts to store LLHandles instead of pointers and screen channel code to work with toast LLHandles.
2011-12-16EXP-1742 FIX -- Clicking IM notification or receiving multiple IM ↵Leslie Linden
notifications in quick succession crashes to desktop * Moved toast logic for mouse hover out of the draw call to avoid chain of callbacks that lead to reordering of the draw list while we are iterating over it.
2011-12-03EXP-1506 FIXED updating IM toasts visibility upoon mouse over and mouse ↵Seth ProductEngine
leave events. The mouse position is checked every frame in relation to the toast to catch the mouse leaving the toast "i" button when the toast is moved by the screen channel. The fix is intended to avoid the toasts that don't fade in the following scenario: 1. Have User A Send 4 IM messages to User B: a, b, c, d 2. Have User B hover their mouse over the i on toast c (don't click on it just hover) 3. As the other toasts fade observe toast c moves up to the top and does not fade
2011-11-08LLHandle<Derived> is now implicitly convertable to LLHandle<Base> and ↵Richard Linden
LLHandle<Base> can be downcast to LLHandle<Derived> using the LLHandleProvider mixin
2010-12-09STORM-774 FIXED Made notification toasts (e.g. IM toasts) respect ↵Vadim ProductEngine
transparency settings: * Normally toasts are as opaque as specified by "inactive floater opacity" setting. * When mouse is hovering a toast, the toast uses "active floater opacity" setting. * Fading toasts have 1/2 of "inactive floater opacity".
2010-12-09STORM-774 WIP Misc renames to improve readability.Vadim ProductEngine
2010-12-09STORM-774 WIP Partially reverted transparency fix for nearby chat toasts ↵Vadim ProductEngine
(STORM-717) to develop a more generic one (applicable to all notification toasts).
2010-12-04STORM-717 FIXED Made nearby chat toasts respect transparency settings:Vadim ProductEngine
* Normally toasts are as opaque as specified by "inactive floater opacity" setting. * When mouse is hovering a toast, the toast uses "active floater opacity" setting. * Fading toasts have 1/2 of "inactive floater opacity".
2010-12-04STORM-717 WIP Cleanup: removed unused on_mouse_enter callback from LLToast.Vadim ProductEngine
2010-10-26STORM-36 FIXED As a User, I want to control how long a chat toast appears ↵Paul Guslisty
before it fades. Please add fade time back to Chat preferences. - Added two spinners to the Chat preferences tab that control NearbyToastLifeTime and NearbyToastFadingTime - Added callbacks to the LLNearbyChatScreenChannel that update these properties if they were changed Refactoring of LLToast: - Removed code that was making toast transparent from LLToast::draw() - Modified LLToast interface that relates to showing and hiding toast, so that all screen channels can use LLToast universally. - Replaced in LLScreenChannel calling methods of old interface to new ones.
2010-08-27Post-convert merge by convert_monolith.py from ./viewer-experienceMonroe Linden
2010-08-16cleaned up LLUICtrlFactory...Richard Nelson
removed redundant functionality moved buildPanel to LLPanel
2010-08-13Change license from GPL to LGPL (version 2.1)Oz Linden
2010-06-30EXT-8044 FIXED Prevented incorrect displaying of toasts in mouselook mode.Alexei Arabadji
Added virtual method LLToast::reshape to prevent calling LLModalDialog::reshape method that changes toasts position. Toasts position should be controlled by toast screen channel. Ideally toasts should have different implementation for alerts and other kind of toasts, but it will leads to vast unwilling for 2.1 changes. reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/666/ --HG-- branch : product-engine
2010-04-22fixed EXT-6805 No fading on toast's disappearingAlexei Arabadji
Reverted toast fading logic. reviewed by Mike Antipov https://codereview.productengine.com/secondlife/r/292/ --HG-- branch : product-engine
2010-04-19fixed EXT-6848 Avoid creation of dummy objects in LLOnlineStatusToast and ↵Alexei Arabadji
LLPanelGenericTip classes. * decoupled tip toast panel related logic from class LLTast; * moved documentation comment of LLPanelGenericTip constructor from .cpp to .h file; * corrected name attribute in panel_generic_tip.xml; reviewed by Mike Antipov and Vadim Savchuk at https://codereview.productengine.com/secondlife/r/230/ --HG-- branch : product-engine
2010-04-12fix for Bug EXT-6713 Normal Gaps in nearby chat toasts queueYuri Chebotarev
and EXT-6714 Normal Old chat toast is shown while chat log is open reviwed https://codereview.productengine.com/secondlife/r/212/ manttipov --HG-- branch : product-engine
2010-04-01EXT-2801 Record "object return" notification into IM history, not chat history,Alexei Arabadji
replaced toast timer LLTimer with LLEventTimer implementation that not depends on draw method; reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/148/ --HG-- branch : product-engine
2010-02-17Fixed low bug EXT-4246 - Close button on notification toast is larger than ↵Dmitry Zaporozhan
host spot. Close button is partially positioned out of toast(floater). Usually, hovering or clicking that "outer" part of the button can not be handled. The workaround is to position the button on the floater and make the floater background invisible. Now close button is properly handled, but toast is transparent. To fix this i added wrapper_panel that looks and behaves like a floater. --HG-- branch : product-engine
2009-12-10implemented task EXT-2609 Implement 'block' option for inventory offersDenis Serdjuk
--HG-- branch : product-engine
2009-12-08implemented normal task EXT-3086 Update non-interactive system toasts behaviorAndrew Polunin
--HG-- branch : product-engine
2009-12-07tast EXT-3096 (Notification toasts mouse hovering behavior), fade behavior ↵Igor Borovkov
is now being reset for all toasts on hovering --HG-- branch : product-engine
2009-11-24Removed llnotifications.h from all headers by adding llnotificationsptr.hJames Cook
Fixed many more includes
2009-10-30fixed normal bug (EXT-1971) Add fade time period for nearby chat bubblesDmitry Oleshko
--HG-- branch : product-engine
2009-10-28additional comments for the major bug (EXT-1849) Crash in Notification ↵Dmitry Oleshko
subsystem while teleporting and having toasts shown --HG-- branch : product-engine
2009-10-27fixed major bug (EXT-1849) Crash in Notification subsystem while teleporting ↵Dmitry Oleshko
and having toasts shown --HG-- branch : product-engine
2009-10-21converted LLToast::Params to be a param blockRichard Nelson
reviewed by James
2009-10-21Merging revisions 2112-2128 of ↵Steven Bennetts
https://svn.aws.productengine.com/secondlife/pe/stable-2 into P:\svn\viewer-2.0.0, respecting ancestry * Bugs: EXT-1605 EXT-1506 EXT-1663 EXT-1616 EXT-1599 EXT-1587 * Dev: EXT-748 EXT-1447 * IM Cleanup