summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerwindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llviewerwindow.h')
-rw-r--r--indra/newview/llviewerwindow.h122
1 files changed, 60 insertions, 62 deletions
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 509a7c4884..e4f6240fc7 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -44,12 +44,15 @@
#include "v3dmath.h"
#include "v2math.h"
-#include "llwindow.h"
+#include "llwindowcallbacks.h"
#include "lltimer.h"
#include "llstat.h"
-#include "llalertdialog.h"
-#include "llnotifications.h"
#include "llmousehandler.h"
+#include "llcursortypes.h"
+#include "llhandle.h"
+
+#include <boost/function.hpp>
+#include <boost/signals2.hpp>
class LLView;
class LLViewerObject;
@@ -57,9 +60,11 @@ class LLUUID;
class LLProgressView;
class LLTool;
class LLVelocityBar;
-class LLTextBox;
+class LLPanel;
class LLImageRaw;
class LLHUDIcon;
+class LLWindow;
+class LLRootView;
#define PICK_HALF_WIDTH 5
#define PICK_DIAMETER (2 * PICK_HALF_WIDTH + 1)
@@ -67,6 +72,17 @@ class LLHUDIcon;
class LLPickInfo
{
public:
+ typedef enum
+ {
+ PICK_OBJECT,
+ PICK_FLORA,
+ PICK_LAND,
+ PICK_ICON,
+ PICK_PARCEL_WALL,
+ PICK_INVALID
+ } EPickType;
+
+public:
LLPickInfo();
LLPickInfo(const LLCoordGL& mouse_pos,
const LLRect& screen_region,
@@ -74,25 +90,14 @@ public:
BOOL pick_transparent,
BOOL pick_surface_info,
void (*pick_callback)(const LLPickInfo& pick_info));
- ~LLPickInfo();
void fetchResults();
LLPointer<LLViewerObject> getObject() const;
LLUUID getObjectID() const { return mObjectID; }
- void drawPickBuffer() const;
+ bool isValid() const { return mPickType != PICK_INVALID; }
static bool isFlora(LLViewerObject* object);
- typedef enum
- {
- PICK_OBJECT,
- PICK_FLORA,
- PICK_LAND,
- PICK_ICON,
- PICK_PARCEL_WALL,
- PICK_INVALID
- } EPickType;
-
public:
LLCoordGL mMousePt;
MASK mKeyMask;
@@ -145,6 +150,8 @@ public:
void adjustControlRectanglesForFirstUse(const LLRect& window);
void initWorldUI();
+ BOOL handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK mask, LLMouseHandler::EClickType clicktype, BOOL down);
+
//
// LLWindowCallback interface implementation
//
@@ -152,7 +159,6 @@ public:
/*virtual*/ BOOL handleTranslatedKeyUp(KEY key, MASK mask);
/*virtual*/ void handleScanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_level);
/*virtual*/ BOOL handleUnicodeChar(llwchar uni_char, MASK mask); // NOT going to handle extended
- /*virtual*/ BOOL handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK mask, LLMouseHandler::EClickType clicktype, BOOL down);
/*virtual*/ BOOL handleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask);
/*virtual*/ BOOL handleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask);
/*virtual*/ BOOL handleCloseRequest(LLWindow *window);
@@ -181,15 +187,28 @@ public:
/*virtual*/ void handlePingWatchdog(LLWindow *window, const char * msg);
/*virtual*/ void handlePauseWatchdog(LLWindow *window);
/*virtual*/ void handleResumeWatchdog(LLWindow *window);
-
+ /*virtual*/ std::string translateString(const char* tag);
+ /*virtual*/ std::string translateString(const char* tag,
+ const std::map<std::string, std::string>& args);
+
+ // signal on bottom tray width changed
+ typedef boost::function<void (void)> bottom_tray_callback_t;
+ typedef boost::signals2::signal<void (void)> bottom_tray_signal_t;
+ bottom_tray_signal_t mOnBottomTrayWidthChanged;
+ boost::signals2::connection setOnBottomTrayWidthChanged(bottom_tray_callback_t cb) { return mOnBottomTrayWidthChanged.connect(cb); }
//
// ACCESSORS
//
- LLView* getRootView() const { return mRootView; }
+ LLRootView* getRootView() const;
// Window in raw pixels as seen on screen.
const LLRect& getWindowRect() const { return mWindowRect; };
+ // portion of window that shows 3d world
+ const LLRect& getWorldViewRect() const { return mWorldViewRect; };
+ LLRect getVirtualWorldViewRect() const;
+ S32 getWorldViewHeight() const;
+ S32 getWorldViewWidth() const;
S32 getWindowDisplayHeight() const;
S32 getWindowDisplayWidth() const;
@@ -200,9 +219,9 @@ public:
S32 getWindowWidth() const;
LLWindow* getWindow() const { return mWindow; }
- void* getPlatformWindow() const { return mWindow->getPlatformWindow(); }
- void* getMediaWindow() const { return mWindow->getMediaWindow(); }
- void focusClient() const { return mWindow->focusClient(); };
+ void* getPlatformWindow() const;
+ void* getMediaWindow() const;
+ void focusClient() const;
LLCoordGL getLastMouse() const { return mLastMousePoint; }
S32 getLastMouseX() const { return mLastMousePoint.mX; }
@@ -219,9 +238,9 @@ public:
BOOL getRightMouseDown() const { return mRightMouseDown; }
const LLPickInfo& getLastPick() const { return mLastPick; }
- const LLPickInfo& getHoverPick() const { return mHoverPick; }
- void setupViewport(S32 x_offset = 0, S32 y_offset = 0);
+ void setup2DViewport(S32 x_offset = 0, S32 y_offset = 0);
+ void setup3DViewport(S32 x_offset = 0, S32 y_offset = 0);
void setup3DRender();
void setup2DRender();
@@ -261,7 +280,13 @@ public:
void updateObjectUnderCursor();
- BOOL handlePerFrameHover(); // Once per frame, update UI based on mouse position
+ void updateUI(); // Once per frame, update UI based on mouse position, calls following update* functions
+ void updateLayout();
+ void updateMouseDelta();
+ void updateKeyboardFocus();
+
+ void updateWorldViewRect(bool use_full_window=false);
+ void updateBottomTrayRect();
BOOL handleKey(KEY key, MASK mask);
void handleScrollWheel (S32 clicks);
@@ -309,11 +334,8 @@ public:
void returnEmptyPicks();
- void pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback)(const LLPickInfo& pick_info),
- BOOL pick_transparent = FALSE, BOOL get_surface_info = FALSE);
+ void pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback)(const LLPickInfo& pick_info), BOOL pick_transparent = FALSE);
LLPickInfo pickImmediate(S32 x, S32 y, BOOL pick_transparent);
- static void hoverPickCallback(const LLPickInfo& pick_info);
-
LLHUDIcon* cursorIntersectIcon(S32 mouse_x, S32 mouse_y, F32 depth,
LLVector3* intersection);
@@ -349,16 +371,16 @@ public:
// handle shutting down GL and bringing it back up
void requestResolutionUpdate(bool fullscreen_checked);
+ void requestResolutionUpdate(); // doesn't affect fullscreen
BOOL checkSettings();
void restartDisplay(BOOL show_progress_bar);
BOOL changeDisplaySettings(BOOL fullscreen, LLCoordScreen size, BOOL disable_vsync, BOOL show_progress_bar);
BOOL getIgnoreDestroyWindow() { return mIgnoreActivate; }
F32 getDisplayAspectRatio() const;
+ F32 getWorldViewAspectRatio() const;
const LLVector2& getDisplayScale() const { return mDisplayScale; }
void calcDisplayScale();
- void drawPickBuffer() const;
-
private:
bool shouldShowToolTipFor(LLMouseHandler *mh);
static bool onAlert(const LLSD& notify);
@@ -382,7 +404,8 @@ protected:
BOOL mShowFullscreenProgress;
LLRect mWindowRect;
LLRect mVirtualWindowRect;
- LLView* mRootView; // a view of size mWindowRect, containing all child views
+ LLRect mWorldViewRect; // specifies area of screen where we render the 3D world
+ LLRootView* mRootView; // a view of size mWindowRect, containing all child views
LLVector2 mDisplayScale;
LLCoordGL mCurrentMousePoint; // last mouse position in GL coords
@@ -395,22 +418,22 @@ protected:
LLProgressView *mProgressView;
- LLTextBox* mToolTip;
- BOOL mToolTipBlocked; // True after a key press or a mouse button event. False once the mouse moves again.
+ LLFrameTimer mToolTipFadeTimer;
+ LLPanel* mToolTip;
+ std::string mLastToolTipMessage;
LLRect mToolTipStickyRect; // Once a tool tip is shown, it will stay visible until the mouse leaves this rect.
BOOL mMouseInWindow; // True if the mouse is over our window or if we have captured the mouse.
BOOL mFocusCycleMode;
+ typedef std::set<LLHandle<LLView> > view_handle_set_t;
+ view_handle_set_t mMouseHoverViews;
// Variables used for tool override switching based on modifier keys. JC
MASK mLastMask; // used to detect changes in modifier mask
LLTool* mToolStored; // the tool we're overriding
- BOOL mSuppressToolbox; // sometimes hide the toolbox, despite
- // having a camera tool selected
BOOL mHideCursorPermanent; // true during drags, mouselook
BOOL mCursorHidden;
LLPickInfo mLastPick;
- LLPickInfo mHoverPick;
std::vector<LLPickInfo> mPicks;
LLRect mPickScreenRegion; // area of frame buffer for rendering pick frames (generally follows mouse to avoid going offscreen)
LLTimer mPickTimer; // timer for scheduling n picks per second
@@ -435,45 +458,21 @@ protected:
static std::string sMovieBaseName;
};
-class LLBottomPanel : public LLPanel
-{
-public:
- LLBottomPanel(const LLRect& rect);
- void setFocusIndicator(LLView * indicator);
- LLView * getFocusIndicator() { return mIndicator; }
- /*virtual*/ void draw();
-
- static void* createHUD(void* data);
- static void* createOverlayBar(void* data);
- static void* createToolBar(void* data);
-
-protected:
- LLView * mIndicator;
-};
-extern LLBottomPanel * gBottomPanel;
-
void toggle_flying(void*);
void toggle_first_person();
void toggle_build(void*);
void reset_viewer_state_on_sim(void);
void update_saved_window_size(const std::string& control,S32 delta_width, S32 delta_height);
-
-
//
// Globals
//
-extern LLVelocityBar* gVelocityBar;
extern LLViewerWindow* gViewerWindow;
-extern LLFrameTimer gMouseIdleTimer; // how long has it been since the mouse last moved?
extern LLFrameTimer gAwayTimer; // tracks time before setting the avatar away state to true
extern LLFrameTimer gAwayTriggerTimer; // how long the avatar has been away
-extern BOOL gDebugSelect;
-
-extern BOOL gDebugFastUIRender;
extern LLViewerObject* gDebugRaycastObject;
extern LLVector3 gDebugRaycastIntersection;
extern LLVector2 gDebugRaycastTexCoord;
@@ -485,7 +484,6 @@ extern S32 CHAT_BAR_HEIGHT;
extern BOOL gDisplayCameraPos;
extern BOOL gDisplayWindInfo;
-extern BOOL gDisplayNearestWater;
extern BOOL gDisplayFOV;
#endif