This requires some cooperation between the plugin and the host, and will only work for specific messages.
The way it works is as follows:
* the plugin sends a message containing the key "blocking_request" (with any value)
* this will cause the "send message" function to block (continuing to pull incoming messages off the network socket and queue them) until it receives a message from the host containing the key "blocking_response"
** NOTE: if the plugin sends a blocking_request that isn't set up to cause the host to send back a blocking_response, it will block forever
* the blocking_response message will be handed to the plugin's "receive message" function _immediately_ (before the "send message" function returns)
** this means that the plugin can extract response data for use by the the code that sent the message (but is still blocked inside the "send message" call)
** NOTE: this BREAKS the invariant stating that the plugin's "receive message" function will never be called recursively, and the plugin MUST be prepared to deal with this
* after the plugin finishes processing the blocking_response message, the "send message" function that was called with the blocking_request message will return to the plugin
* any queued messages will be delivered after the outer invocation of the plugin's "receive message" function returns (as normal)
Inside the viewer, the code can tell when a plugin is in this blocked state by calling LLPluginProcessParent::isBlocked(). LLPluginClassMedia uses this to avoid sending mouse-move and size-change messages to blocked plugins.
- added grouping clothing items by wearable type (shirt, jeans etc.)
- added sorting clothing items by wearing order in groups
- added separators between items of the same wearable type (lists: clothing, body parts)
- added list specific button bars
- partially added dummy items for missing wearable types in the COF (clothing list)
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/322
--HG--
branch : product-engine
- added PickerControlEntry - dictionary entry which contains information about particular picker control
- added ColorSwatchCtrls and TextureCtrls - lists of PickerControlEntries, contain information about color and texture controls for particular EWearableType
- implemented some helper functions for picker management
Reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/327/
--HG--
branch : product-engine
- Removed string fragmentation by changing concatenation of name and action to whole-sentence strings.
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/328
--HG--
branch : product-engine
Implemented passing of entered filter substring without head spaces to search URI in help message for null filtered results.
* Updated setting "no item message" to use search term from filter editor for avatar & group lists and for inventory panels.
* Updated appropriate translatable strings to get [SEARCH_TERM] substitution.
* Updated processing of filter substring to pass original string to methods applied new filter.
Additional necessary changes
* Changed place to set "no item message" for group list from refresh to where filter is updated (like in avatar lists)
* Removed converting of filter substring to upper case in Places & My Appearance sidepanels (this conversion has already been implemented in where filter is applied)
* Added a separate message for Landmarks to set search URI to secondlife:///app/search/places for Lanmarks panel;
other inventory related panels have URL to all searched categories (secondlife:///app/search/all)
Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/326/
--HG--
branch : product-engine
- Made the indicator rotate clockwise (by flipping the images and reversing the order they're traversed).
- The textures are now preloaded.
Approved by Erica.
--HG--
branch : product-engine
Simple perpetual loading indicator a la MacOS X or YouTube.
Implements spinning by changing pre-defined images.
The images are hardcoded, shared by all instances of the widget.
Number of rotations per second can be changed via params.
Reviewed by Mike at https://codereview.productengine.com/secondlife/r/320/
--HG--
branch : product-engine
corrected dirty state management - taking into account changes in ordering between wearables of COF and Base Outfit
Reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/280/
--HG--
branch : product-engine
- added space in the strings.xml for translation, so that languages that need the space (English, Spanish, French, etc.) can have it, and languages that don't (Japanese, Chinese etc) can remove it
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/314/
--HG--
branch : product-engine
-increased floater minimal width
-decreased width of TextBox with truncated string and used 'use_ellipses' for it
-deleted overriden button width dimension in DE locale
Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/315/
--HG--
branch : product-engine
EXT-7077 : Enable paste as link for folders
Took out code that was stopping paste for god-mode only. Now everyone can do it.
Corrected a bool logic error for protected folder restrictions.