[fix] fix control bar width

This commit is contained in:
dijunkun
2024-08-06 10:35:25 +08:00
parent 8e03e8e79b
commit 5a992b6589
3 changed files with 35 additions and 83 deletions

View File

@@ -10,7 +10,8 @@ int Render::ControlBar() {
ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 3.0f); ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 3.0f);
if (control_bar_button_pressed_) { 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 // Mouse control
std::string mouse = ICON_FA_COMPUTER_MOUSE; std::string mouse = ICON_FA_COMPUTER_MOUSE;
if (ImGui::Button(mouse.c_str(), ImVec2(25, 25))) { if (ImGui::Button(mouse.c_str(), ImVec2(25, 25))) {
@@ -45,8 +46,8 @@ int Render::ControlBar() {
ImGui::SameLine(); ImGui::SameLine();
} }
ImGui::SetCursorPosX(is_control_bar_in_left_ ? control_window_width_ * 2 - 18 ImGui::SetCursorPosX(
: 2); is_control_bar_in_left_ ? (control_window_width_ * 2 - 18) : 3);
std::string control_bar = std::string control_bar =
control_bar_button_pressed_ control_bar_button_pressed_
@@ -56,6 +57,7 @@ int Render::ControlBar() {
if (ImGui::Button(control_bar.c_str(), ImVec2(15, 25))) { if (ImGui::Button(control_bar.c_str(), ImVec2(15, 25))) {
control_bar_button_pressed_ = !control_bar_button_pressed_; control_bar_button_pressed_ = !control_bar_button_pressed_;
control_bar_button_pressed_time_ = ImGui::GetTime(); control_bar_button_pressed_time_ = ImGui::GetTime();
control_window_width_is_changing_ = true;
} }
ImGui::PopStyleVar(); ImGui::PopStyleVar();

View File

@@ -3,53 +3,13 @@
int Render::ControlWindow() { int Render::ControlWindow() {
auto time_duration = ImGui::GetTime() - control_bar_button_pressed_time_; 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_window_width_is_changing_) {
if (control_bar_button_pressed_) { 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_width_ =
control_window_min_width_ + control_window_min_width_ +
(control_window_max_width_ - control_window_min_width_) * 4 * (control_window_max_width_ - control_window_min_width_) * 4 *
time_duration; time_duration;
} else { } 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_width_ =
control_window_max_width_ - control_window_max_width_ -
(control_window_max_width_ - control_window_min_width_) * 4 * (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 < title_bar_height_ ||
control_winodw_pos_.y > control_winodw_pos_.y >
main_window_height_ - control_window_height_)) { main_window_height_ - control_window_height_)) {
ImGui::SetNextWindowPos( int pos_x = 0;
ImVec2(0, int pos_y = (control_winodw_pos_.y >= title_bar_height_ &&
(control_winodw_pos_.y >= title_bar_height_ && control_winodw_pos_.y <=
control_winodw_pos_.y <= main_window_height_ - control_window_height_)
main_window_height_ - control_window_height_) ? control_winodw_pos_.y
? control_winodw_pos_.y : (control_winodw_pos_.y < title_bar_height_
: (control_winodw_pos_.y < title_bar_height_ ? title_bar_height_
? title_bar_height_ : (main_window_height_ - control_window_height_));
: (main_window_height_ - control_window_height_))),
ImGuiCond_Always); 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; is_control_bar_in_left_ = true;
} else if (control_winodw_pos_.x > main_window_width_ / 2 || } else if (control_winodw_pos_.x > main_window_width_ / 2 ||
(control_winodw_pos_.y < title_bar_height_ || (control_winodw_pos_.y < title_bar_height_ ||
@@ -98,7 +73,7 @@ int Render::ControlWindow() {
: (main_window_height_ - control_window_height_)); : (main_window_height_ - control_window_height_));
if (control_bar_button_pressed_) { 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_ = control_window_max_width_;
control_window_width_is_changing_ = false; control_window_width_is_changing_ = false;
pos_x = main_window_width_ - control_window_max_width_; pos_x = main_window_width_ - control_window_max_width_;
@@ -107,7 +82,7 @@ int Render::ControlWindow() {
pos_x = main_window_width_ - control_window_width_; pos_x = main_window_width_ - control_window_width_;
} }
} else { } 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_ = control_window_min_width_;
control_window_width_is_changing_ = false; control_window_width_is_changing_ = false;
pos_x = main_window_width_ - control_window_min_width_; pos_x = main_window_width_ - control_window_min_width_;
@@ -116,36 +91,11 @@ int Render::ControlWindow() {
pos_x = main_window_width_ - control_window_width_; 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); ImGui::SetNextWindowPos(ImVec2(pos_x, pos_y), ImGuiCond_Always);
is_control_bar_in_left_ = false; 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, ImGui::Begin("ControlWindow", nullptr,
ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize |
ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollbar |

View File

@@ -143,7 +143,7 @@ class Render {
int main_window_height_before_maximized_ = 570; int main_window_height_before_maximized_ = 570;
int control_window_min_width_ = 20; int control_window_min_width_ = 20;
int control_window_max_width_ = 150; int control_window_max_width_ = 150;
int control_window_width_ = 0; int control_window_width_ = 20;
int control_window_height_ = 40; int control_window_height_ = 40;
int local_window_width_ = 350; int local_window_width_ = 350;
int status_bar_height_ = 20; int status_bar_height_ = 20;
@@ -198,8 +198,8 @@ class Render {
bool show_about_window_ = false; bool show_about_window_ = false;
bool show_connection_status_window_ = false; bool show_connection_status_window_ = false;
bool window_maximized_ = false; bool window_maximized_ = false;
bool streaming_ = true; bool streaming_ = false;
bool is_client_mode_ = true; bool is_client_mode_ = false;
bool is_control_bar_in_left_ = true; bool is_control_bar_in_left_ = true;
bool control_window_width_is_changing_ = false; bool control_window_width_is_changing_ = false;