mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-03-29 04:55:31 +08:00
[fix] fix DPI scaling issues
This commit is contained in:
@@ -76,7 +76,8 @@ int Render::LocalWindow() {
|
||||
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0, 0, 0, 0));
|
||||
ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0, 0, 0, 0));
|
||||
ImGui::SetWindowFontScale(0.5f);
|
||||
if (ImGui::Button(ICON_FA_COPY, ImVec2(22, 38))) {
|
||||
if (ImGui::Button(ICON_FA_COPY,
|
||||
ImVec2(22 * dpi_scale_, 38 * dpi_scale_))) {
|
||||
local_id_copied_ = true;
|
||||
ImGui::SetClipboardText(client_id_);
|
||||
copy_start_time_ = ImGui::GetTime();
|
||||
@@ -156,23 +157,27 @@ int Render::LocalWindow() {
|
||||
ImGui::SetWindowFontScale(0.5f);
|
||||
auto l_x = ImGui::GetCursorScreenPos().x;
|
||||
auto l_y = ImGui::GetCursorScreenPos().y;
|
||||
if (ImGui::Button(ICON_FA_EYE, ImVec2(22, 38))) {
|
||||
if (ImGui::Button(ICON_FA_EYE,
|
||||
ImVec2(22 * dpi_scale_, 38 * dpi_scale_))) {
|
||||
show_password_ = !show_password_;
|
||||
}
|
||||
|
||||
if (!show_password_) {
|
||||
ImDrawList* draw_list = ImGui::GetWindowDrawList();
|
||||
draw_list->AddLine(ImVec2(l_x + 3.0f, l_y + 12.5f),
|
||||
ImVec2(l_x + 20.3f, l_y + 26.5f),
|
||||
IM_COL32(239, 240, 242, 255), 2.0f);
|
||||
draw_list->AddLine(ImVec2(l_x + 3.0f, l_y + 11.0f),
|
||||
ImVec2(l_x + 20.3f, l_y + 25.0f),
|
||||
IM_COL32(0, 0, 0, 255), 1.5f);
|
||||
draw_list->AddLine(
|
||||
ImVec2(l_x + 3.0f * dpi_scale_, l_y + 12.5f * dpi_scale_),
|
||||
ImVec2(l_x + 20.3f * dpi_scale_, l_y + 26.5f * dpi_scale_),
|
||||
IM_COL32(239, 240, 242, 255), 2.0f);
|
||||
draw_list->AddLine(
|
||||
ImVec2(l_x + 3.0f * dpi_scale_, l_y + 11.0f * dpi_scale_),
|
||||
ImVec2(l_x + 20.3f * dpi_scale_, l_y + 25.0f * dpi_scale_),
|
||||
IM_COL32(0, 0, 0, 255), 1.5f);
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
if (ImGui::Button(ICON_FA_PEN, ImVec2(22, 38))) {
|
||||
if (ImGui::Button(ICON_FA_PEN,
|
||||
ImVec2(22 * dpi_scale_, 38 * dpi_scale_))) {
|
||||
show_reset_password_window_ = true;
|
||||
}
|
||||
ImGui::SetWindowFontScale(1.0f);
|
||||
|
||||
@@ -12,9 +12,9 @@ int Render::RecentConnectionsWindow() {
|
||||
ImGui::PushStyleColor(ImGuiCol_ChildBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
|
||||
ImGui::BeginChild(
|
||||
"RecentConnectionsWindow",
|
||||
ImVec2(main_window_width_default_,
|
||||
main_window_height_default_ - title_bar_height_ -
|
||||
local_window_height_ - status_bar_height_ + 1.0f),
|
||||
ImVec2(main_window_width_, main_window_height_ - title_bar_height_ -
|
||||
local_window_height_ - status_bar_height_ +
|
||||
1.0f),
|
||||
ImGuiChildFlags_Border,
|
||||
ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse |
|
||||
ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar |
|
||||
@@ -41,14 +41,15 @@ int Render::ShowRecentConnections() {
|
||||
ImVec2 sub_window_pos = ImGui::GetCursorPos();
|
||||
std::map<std::string, ImVec2> sub_containers_pos;
|
||||
float recent_connection_sub_container_width =
|
||||
recent_connection_image_width_ + 16.0f;
|
||||
recent_connection_image_width_ + 16.0f * dpi_scale_;
|
||||
float recent_connection_sub_container_height =
|
||||
recent_connection_image_height_ + 36.0f;
|
||||
recent_connection_image_height_ + 36.0f * dpi_scale_;
|
||||
ImGui::PushStyleColor(ImGuiCol_ChildBg,
|
||||
ImVec4(239.0f / 255, 240.0f / 255, 242.0f / 255, 1.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_ChildRounding, 10.0f);
|
||||
ImGui::BeginChild("RecentConnectionsContainer",
|
||||
ImVec2(main_window_width_default_ - 50.0f, 145.0f),
|
||||
ImVec2(main_window_width_ * 0.95f,
|
||||
recent_connection_sub_container_height * 1.1f),
|
||||
ImGuiChildFlags_Border,
|
||||
ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse |
|
||||
ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar |
|
||||
@@ -60,8 +61,8 @@ int Render::ShowRecentConnections() {
|
||||
ImGui::PopStyleColor();
|
||||
size_t recent_connections_count = recent_connections_.size();
|
||||
int count = 0;
|
||||
float button_width = 22;
|
||||
float button_height = 22;
|
||||
float button_width = 22 * dpi_scale_;
|
||||
float button_height = 22 * dpi_scale_;
|
||||
for (auto& it : recent_connections_) {
|
||||
sub_containers_pos[it.first] = ImGui::GetCursorPos();
|
||||
std::string recent_connection_sub_window_name =
|
||||
@@ -206,17 +207,20 @@ int Render::ShowRecentConnections() {
|
||||
|
||||
if (count != recent_connections_count - 1) {
|
||||
ImVec2 line_start =
|
||||
ImVec2(image_screen_pos.x + recent_connection_image_width_ + 20.0f,
|
||||
ImVec2(image_screen_pos.x + recent_connection_image_width_ +
|
||||
20.0f * dpi_scale_,
|
||||
image_screen_pos.y);
|
||||
ImVec2 line_end = ImVec2(
|
||||
image_screen_pos.x + recent_connection_image_width_ + 20.0f,
|
||||
image_screen_pos.x + recent_connection_image_width_ +
|
||||
20.0f * dpi_scale_,
|
||||
image_screen_pos.y + recent_connection_image_height_ + button_height);
|
||||
ImGui::GetWindowDrawList()->AddLine(line_start, line_end,
|
||||
IM_COL32(0, 0, 0, 122), 1.0f);
|
||||
}
|
||||
|
||||
count++;
|
||||
ImGui::SameLine(0, count != recent_connections_count ? 26.0f : 0.0f);
|
||||
ImGui::SameLine(
|
||||
0, count != recent_connections_count ? 26.0f * dpi_scale_ : 0.0f);
|
||||
}
|
||||
|
||||
ImGui::EndChild();
|
||||
|
||||
@@ -75,7 +75,8 @@ int Render::RemoteWindow() {
|
||||
remote_id.erase(remove_if(remote_id.begin(), remote_id.end(),
|
||||
static_cast<int (*)(int)>(&isspace)),
|
||||
remote_id.end());
|
||||
if (ImGui::Button(ICON_FA_ARROW_RIGHT_LONG, ImVec2(55, 38)) ||
|
||||
if (ImGui::Button(ICON_FA_ARROW_RIGHT_LONG,
|
||||
ImVec2(55 * dpi_scale_, 38 * dpi_scale_)) ||
|
||||
enter_pressed) {
|
||||
connect_button_pressed_ = true;
|
||||
bool found = false;
|
||||
@@ -181,6 +182,20 @@ int Render::ConnectTo(const std::string& remote_id, const char* password,
|
||||
memcpy(&props->params_, ¶ms_, sizeof(Params));
|
||||
props->params_.user_id = props->local_id_.c_str();
|
||||
props->peer_ = CreatePeer(&props->params_);
|
||||
props->control_window_min_width_ =
|
||||
props->control_window_min_width_ * dpi_scale_;
|
||||
props->control_window_min_height_ =
|
||||
props->control_window_min_height_ * dpi_scale_;
|
||||
props->control_window_max_width_ =
|
||||
props->control_window_max_width_ * dpi_scale_;
|
||||
props->control_window_max_height_ =
|
||||
props->control_window_max_height_ * dpi_scale_;
|
||||
props->control_window_width_ =
|
||||
props->control_window_width_ * dpi_scale_;
|
||||
props->control_window_height_ =
|
||||
props->control_window_height_ * dpi_scale_;
|
||||
// props->control_bar_pos_x_ = props->control_bar_pos_x_ * dpi_scale_;
|
||||
// props->control_bar_pos_y_ = props->control_bar_pos_y_ * dpi_scale_;
|
||||
|
||||
if (!props->peer_) {
|
||||
LOG_INFO("Create peer [{}] instance failed", props->local_id_);
|
||||
|
||||
Reference in New Issue
Block a user