From 5a992b658964dea401906d567745cc7e5e2a0951 Mon Sep 17 00:00:00 2001 From: dijunkun Date: Tue, 6 Aug 2024 10:35:25 +0800 Subject: [PATCH] [fix] fix control bar width --- src/single_window/control_bar.cpp | 8 ++- src/single_window/control_window.cpp | 104 +++++++-------------------- src/single_window/render.h | 6 +- 3 files changed, 35 insertions(+), 83 deletions(-) diff --git a/src/single_window/control_bar.cpp b/src/single_window/control_bar.cpp index acb3f24..dcde64b 100644 --- a/src/single_window/control_bar.cpp +++ b/src/single_window/control_bar.cpp @@ -10,7 +10,8 @@ int Render::ControlBar() { ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 3.0f); if (control_bar_button_pressed_) { - ImGui::SetCursorPosX(control_window_width_ + 2); + ImGui::SetCursorPosX(is_control_bar_in_left_ ? (control_window_width_ + 5) + : 87); // Mouse control std::string mouse = ICON_FA_COMPUTER_MOUSE; if (ImGui::Button(mouse.c_str(), ImVec2(25, 25))) { @@ -45,8 +46,8 @@ int Render::ControlBar() { ImGui::SameLine(); } - ImGui::SetCursorPosX(is_control_bar_in_left_ ? control_window_width_ * 2 - 18 - : 2); + ImGui::SetCursorPosX( + is_control_bar_in_left_ ? (control_window_width_ * 2 - 18) : 3); std::string control_bar = control_bar_button_pressed_ @@ -56,6 +57,7 @@ int Render::ControlBar() { if (ImGui::Button(control_bar.c_str(), ImVec2(15, 25))) { control_bar_button_pressed_ = !control_bar_button_pressed_; control_bar_button_pressed_time_ = ImGui::GetTime(); + control_window_width_is_changing_ = true; } ImGui::PopStyleVar(); diff --git a/src/single_window/control_window.cpp b/src/single_window/control_window.cpp index a8c058a..cd0d4d0 100644 --- a/src/single_window/control_window.cpp +++ b/src/single_window/control_window.cpp @@ -3,53 +3,13 @@ int Render::ControlWindow() { auto time_duration = ImGui::GetTime() - control_bar_button_pressed_time_; - // if (time_duration <= 0.25f) { - // control_window_width_is_changing_ = true; - // } else { - // control_window_width_is_changing_ = false; - // } - - // control_window_width_ = - // !control_bar_button_pressed_ - // ? (time_duration < 0.25f - // ? control_window_max_width_ - - // (control_window_max_width_ - - // control_window_min_width_) * - // 4 * time_duration - // : control_window_min_width_) - // : (time_duration < 0.25f - // ? control_window_min_width_ + - // (control_window_max_width_ - - // control_window_min_width_) * - // 4 * time_duration - // : control_window_max_width_); - if (control_window_width_is_changing_) { if (control_bar_button_pressed_) { - // control_window_width_ = - // control_window_width_is_changing_ - // ? control_window_min_width_ + - // (control_window_max_width_ - control_window_min_width_) * - // 4 - // * - // time_duration - // : control_window_max_width_; - control_window_width_ = control_window_min_width_ + (control_window_max_width_ - control_window_min_width_) * 4 * time_duration; - } else { - // control_window_width_ = - // control_window_width_is_changing_ - // ? control_window_max_width_ - - // (control_window_max_width_ - control_window_min_width_) * - // 4 - // * - // time_duration - // : control_window_min_width_; - control_window_width_ = control_window_max_width_ - (control_window_max_width_ - control_window_min_width_) * 4 * @@ -73,16 +33,31 @@ int Render::ControlWindow() { (control_winodw_pos_.y < title_bar_height_ || control_winodw_pos_.y > main_window_height_ - control_window_height_)) { - ImGui::SetNextWindowPos( - ImVec2(0, - (control_winodw_pos_.y >= title_bar_height_ && - control_winodw_pos_.y <= - main_window_height_ - control_window_height_) - ? control_winodw_pos_.y - : (control_winodw_pos_.y < title_bar_height_ - ? title_bar_height_ - : (main_window_height_ - control_window_height_))), - ImGuiCond_Always); + int pos_x = 0; + int pos_y = (control_winodw_pos_.y >= title_bar_height_ && + control_winodw_pos_.y <= + main_window_height_ - control_window_height_) + ? control_winodw_pos_.y + : (control_winodw_pos_.y < title_bar_height_ + ? title_bar_height_ + : (main_window_height_ - control_window_height_)); + + if (control_bar_button_pressed_) { + if (control_window_width_ >= control_window_max_width_) { + control_window_width_ = control_window_max_width_; + control_window_width_is_changing_ = false; + } else { + control_window_width_is_changing_ = true; + } + } else { + if (control_window_width_ <= control_window_min_width_) { + control_window_width_ = control_window_min_width_; + control_window_width_is_changing_ = false; + } else { + control_window_width_is_changing_ = true; + } + } + ImGui::SetNextWindowPos(ImVec2(pos_x, pos_y), ImGuiCond_Always); is_control_bar_in_left_ = true; } else if (control_winodw_pos_.x > main_window_width_ / 2 || (control_winodw_pos_.y < title_bar_height_ || @@ -98,7 +73,7 @@ int Render::ControlWindow() { : (main_window_height_ - control_window_height_)); if (control_bar_button_pressed_) { - if (control_window_width_ > control_window_max_width_) { + if (control_window_width_ >= control_window_max_width_) { control_window_width_ = control_window_max_width_; control_window_width_is_changing_ = false; pos_x = main_window_width_ - control_window_max_width_; @@ -107,7 +82,7 @@ int Render::ControlWindow() { pos_x = main_window_width_ - control_window_width_; } } else { - if (control_window_width_ < control_window_min_width_) { + if (control_window_width_ <= control_window_min_width_) { control_window_width_ = control_window_min_width_; control_window_width_is_changing_ = false; pos_x = main_window_width_ - control_window_min_width_; @@ -116,36 +91,11 @@ int Render::ControlWindow() { pos_x = main_window_width_ - control_window_width_; } } - - // int pos_x = - // control_bar_button_pressed_ - // ? (control_window_width_is_changing_ - // ? (main_window_width_ - control_window_width_) - // : (main_window_width_ - control_window_max_width_)) - // : (control_window_width_is_changing_ - // ? (main_window_width_ - control_window_width_) - // : (main_window_width_ - control_window_min_width_)); - - // int pos_y = (control_winodw_pos_.y >= title_bar_height_ && - // control_winodw_pos_.y <= - // main_window_height_ - control_window_height_) - // ? control_winodw_pos_.y - // : (control_winodw_pos_.y < title_bar_height_ - // ? title_bar_height_ - // : (main_window_height_ - - // control_window_height_)); - ImGui::SetNextWindowPos(ImVec2(pos_x, pos_y), ImGuiCond_Always); is_control_bar_in_left_ = false; - LOG_ERROR("x [{}], y[{}], [{}] | [{}]", pos_x, pos_y, main_window_width_, - control_window_width_); } } - // LOG_ERROR("x[{}], y[{}], w[{}]", control_winodw_pos_.x, - // control_winodw_pos_.y, - // control_window_width_); - ImGui::Begin("ControlWindow", nullptr, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | diff --git a/src/single_window/render.h b/src/single_window/render.h index 5c6eb6d..25a9efc 100644 --- a/src/single_window/render.h +++ b/src/single_window/render.h @@ -143,7 +143,7 @@ class Render { int main_window_height_before_maximized_ = 570; int control_window_min_width_ = 20; int control_window_max_width_ = 150; - int control_window_width_ = 0; + int control_window_width_ = 20; int control_window_height_ = 40; int local_window_width_ = 350; int status_bar_height_ = 20; @@ -198,8 +198,8 @@ class Render { bool show_about_window_ = false; bool show_connection_status_window_ = false; bool window_maximized_ = false; - bool streaming_ = true; - bool is_client_mode_ = true; + bool streaming_ = false; + bool is_client_mode_ = false; bool is_control_bar_in_left_ = true; bool control_window_width_is_changing_ = false;