diff --git a/src/ui/windows/market_tab.cpp b/src/ui/windows/market_tab.cpp index 7058bca..328af6d 100644 --- a/src/ui/windows/market_tab.cpp +++ b/src/ui/windows/market_tab.cpp @@ -36,8 +36,6 @@ using namespace material; // ---- Market tab persistent state ---- static std::vector s_price_history; // mirror of WalletState market.price_history -static bool s_history_initialized = false; -static double s_last_refresh_time = 0.0; // Exchange / pair selection static int s_exchange_idx = 0; @@ -97,7 +95,7 @@ static std::string FormatPrice(double price) // ---- Portfolio editor (modal) state ---- static bool s_portfolio_editor_open = false; -static int s_pf_sel = -1; // selected group index in the master list; -1 = none, -2 = unsaved draft +static int s_pf_sel = -1; // selected group index in the master list; -1 = none static int s_pf_section = 0; // right-pane segmented control: 0=Appearance 1=Price 2=Addresses // Backdrop live-capture: capture once on open + on viewport resize (not every frame). The blur is a // frozen snapshot while the modal is open — efficient and flicker-free. @@ -1464,8 +1462,6 @@ void RenderMarketTab(App* app) // The chart series (s_price_history) + timestamps (chartTimes) were computed in the // precompute above. Historical intervals come from CoinGecko market_chart; "Live" is the // in-session buffer. Until two points exist, the empty-state below is shown. - s_history_initialized = true; - // The chart shares the combined hero+chart glass panel drawn in PRICE SUMMARY above. ImVec2 chartMin = ImGui::GetCursorScreenPos(); ImVec2 chartMax(chartMin.x + availWidth, chartMin.y + chartH); @@ -1500,7 +1496,6 @@ void RenderMarketTab(App* app) ImGui::PushID(9100 + b); if (ImGui::InvisibleButton("##civ", ImVec2(bw, pillH))) { s_chart_interval = kIvs[b].iv; - s_history_initialized = false; } if (ImGui::IsItemHovered()) ImGui::SetMouseCursor(ImGuiMouseCursor_Hand); ImGui::PopID(); @@ -1521,8 +1516,6 @@ void RenderMarketTab(App* app) ImGui::SetCursorScreenPos(rbMin); if (ImGui::InvisibleButton("##RefreshMarket", ImVec2(pillH, pillH))) { app->refreshMarketData(); - s_history_initialized = false; - s_last_refresh_time = ImGui::GetTime(); } if (ImGui::IsItemHovered()) material::Tooltip("%s", TR("market_refresh_price")); @@ -1774,7 +1767,6 @@ void RenderMarketTab(App* app) if (ex != s_exchange_idx || pr != s_pair_idx) { s_exchange_idx = ex; s_pair_idx = pr; - s_history_initialized = false; app->settings()->setSelectedExchange(exName); app->settings()->setSelectedPair(pairName); app->settings()->save(); @@ -1942,7 +1934,7 @@ void RenderMarketTab(App* app) // Value + DRGX strings per basis. char vb[80]; std::string valueStr; bool hasValue = false; if (e.priceBasis == 0 && market.price_usd > 0) { snprintf(vb, sizeof(vb), "$%.2f", bal * market.price_usd); valueStr = vb; hasValue = true; } - else if (e.priceBasis == 1 && market.price_btc > 0) { snprintf(vb, sizeof(vb), "%.6f BTC", bal * market.price_btc); valueStr = vb; hasValue = true; } + else if (e.priceBasis == 1 && market.price_btc > 0) { snprintf(vb, sizeof(vb), "%.8f BTC", bal * market.price_btc); valueStr = vb; hasValue = true; } else if (e.priceBasis == 3 && e.manualPrice > 0.0) { snprintf(vb, sizeof(vb), "%.2f %s", bal * e.manualPrice, e.manualCurrency.c_str()); valueStr = vb; hasValue = true; } char db[48]; snprintf(db, sizeof(db), "%.4f %s", bal, DRAGONX_TICKER); bool heroIsValue = e.showValue && hasValue;