aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--linden/indra/newview/llfloatermap.cpp56
-rw-r--r--linden/indra/newview/llfloatermap.h1
2 files changed, 57 insertions, 0 deletions
diff --git a/linden/indra/newview/llfloatermap.cpp b/linden/indra/newview/llfloatermap.cpp
index 5aed515..e482d99 100644
--- a/linden/indra/newview/llfloatermap.cpp
+++ b/linden/indra/newview/llfloatermap.cpp
@@ -84,6 +84,12 @@ BOOL LLFloaterMap::postBuild()
84 setIsChrome(TRUE); 84 setIsChrome(TRUE);
85 85
86 childSetAction("toggle_radar", onToggleRadar, this); 86 childSetAction("toggle_radar", onToggleRadar, this);
87
88 if (!gSavedSettings.getBOOL("ShowMiniMapRadar"))
89 {
90 // Collapse radar if it's not showing.
91 adjustLayout( false );
92 }
87 93
88 return TRUE; 94 return TRUE;
89} 95}
@@ -179,8 +185,17 @@ void LLFloaterMap::toggleRadarVisible()
179 185
180void LLFloaterMap::setRadarVisible( bool show_radar ) 186void LLFloaterMap::setRadarVisible( bool show_radar )
181{ 187{
188 bool old_show_radar = gSavedSettings.getBOOL("ShowMiniMapRadar");
189
182 gSavedSettings.setBOOL("ShowMiniMapRadar", show_radar); 190 gSavedSettings.setBOOL("ShowMiniMapRadar", show_radar);
183 setRadarButtonState( show_radar ); 191 setRadarButtonState( show_radar );
192 mPanelRadar->setVisible( show_radar );
193
194 // Adjust the minimap window's size if visibility is changing
195 if (show_radar != old_show_radar)
196 {
197 adjustLayout( show_radar );
198 }
184} 199}
185 200
186 201
@@ -202,3 +217,44 @@ void LLFloaterMap::setRadarButtonState( bool showing_radar )
202 } 217 }
203 } 218 }
204} 219}
220
221
222void LLFloaterMap::adjustLayout( bool expand )
223{
224 S32 radar_height = mPanelRadar->getRect().getHeight();
225 S32 height = getRect().getHeight();
226 LLRect map_rect = mPanelMap->getRect();
227 S32 map_bottom = map_rect.mBottom;
228
229 S32 min_width, min_height;
230 getResizeLimits( &min_width, &min_height );
231
232 S32 adjust = radar_height;
233 if (!expand)
234 {
235 adjust = -adjust;
236 }
237
238 height += adjust;
239 min_height += adjust;
240 map_bottom += adjust;
241
242 map_rect.set( map_rect.mLeft, map_rect.mTop,
243 map_rect.mRight, map_bottom );
244 mPanelMap->setRect(map_rect);
245
246 setResizeLimits( min_width, min_height );
247 reshape( getRect().getWidth(), height, false );
248
249 LLRect temp_rect = getRect();
250 temp_rect.translate( 0, -adjust );
251 setRect( temp_rect );
252
253 LLButton* toggle = getChild<LLButton>("toggle_radar");
254 if (toggle)
255 {
256 temp_rect = toggle->getRect();
257 temp_rect.translate( 0, adjust );
258 toggle->setRect( temp_rect );
259 }
260}
diff --git a/linden/indra/newview/llfloatermap.h b/linden/indra/newview/llfloatermap.h
index 7937836..ec6f4d3 100644
--- a/linden/indra/newview/llfloatermap.h
+++ b/linden/indra/newview/llfloatermap.h
@@ -71,6 +71,7 @@ private:
71 void toggleRadarVisible(); 71 void toggleRadarVisible();
72 void setRadarVisible( bool show_radar ); 72 void setRadarVisible( bool show_radar );
73 void setRadarButtonState(bool showing_radar); 73 void setRadarButtonState(bool showing_radar);
74 void adjustLayout( bool expand );
74}; 75};
75 76
76#endif // LL_LLFLOATERMAP_H 77#endif // LL_LLFLOATERMAP_H