From b3790c41d200bb26e389b41ed9911cb460fac686 Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jackpot51@gmail.com> Date: Tue, 21 Mar 2017 21:21:24 -0600 Subject: [PATCH] Make most applications adjust to available screen size --- src/browser/main.rs | 5 +++-- src/editor/main.rs | 19 ++++++++++--------- src/terminal/main.rs | 6 +++--- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/browser/main.rs b/src/browser/main.rs index f3c9c21..0521d2f 100644 --- a/src/browser/main.rs +++ b/src/browser/main.rs @@ -554,8 +554,9 @@ fn main_window(arg: &str, font: &Font, font_bold: &Font) { let mut url = Url::parse(arg).unwrap(); - let window_w = 800; - let window_h = 600; + let (display_width, display_height) = orbclient::get_display_size().expect("viewer: failed to get display size"); + let (window_w, window_h) = (cmp::min(800, display_width * 4/5) as i32, cmp::min(576, display_height * 4/5) as i32); + let mut window = Window::new_flags( -1, -1, window_w as u32, window_h as u32, "Browser", &[WindowFlag::Resizable] ).unwrap(); diff --git a/src/editor/main.rs b/src/editor/main.rs index 79be5d4..bf0899a 100644 --- a/src/editor/main.rs +++ b/src/editor/main.rs @@ -1,11 +1,12 @@ #![deny(warnings)] +extern crate orbclient; extern crate orbtk; use orbtk::{Action, Button, Menu, Point, Rect, Separator, TextBox, Window}; use orbtk::traits::{Click, Place, Text}; -use std::env; +use std::{cmp, env}; use std::fs::File; use std::io::{Read, Write}; @@ -18,10 +19,10 @@ fn main(){ format!("Editor") }; - let width = 800; - let height = 600; + let (display_width, display_height) = orbclient::get_display_size().expect("viewer: failed to get display size"); + let (width, height) = (cmp::min(800, display_width * 4/5), cmp::min(576, display_height * 4/5)); - let mut window = Window::new(Rect::new(100, 100, width, height), &title); + let mut window = Window::new(Rect::new(-1, -1, width, height), &title); let text_box = TextBox::new(); text_box.position(0, 16) @@ -82,11 +83,11 @@ fn main(){ let save_as_path_option = path_option.clone(); save_as_action.on_click(move |_action: &Action, _point: Point| { println!("Save As"); - let mut window = Window::new(Rect::new(100, 100, 576, 32), "Save As"); + let mut window = Window::new(Rect::new(100, 100, 320, 32), "Save As"); let text_box = TextBox::new(); text_box.position(0, 0) - .size(576, 16); + .size(320, 16); window.add(&text_box); if let Some(ref path) = save_as_path_option { @@ -97,7 +98,7 @@ fn main(){ let window_cancel = &mut window as *mut Window; let button = Button::new(); button.position(0, 16) - .size(576/2, 16) + .size(320/2, 16) .text("Cancel") .on_click(move |_button: &Button, _point: Point| { unsafe { (&mut *window_cancel).close(); } @@ -108,8 +109,8 @@ fn main(){ { let window_save_as = &mut window as *mut Window; let button = Button::new(); - button.position(576/2, 16) - .size(576/2, 16) + button.position(320/2, 16) + .size(320/2, 16) .text("Save As") .on_click(move |_button: &Button, _point: Point| { println!("Save {}", text_box.text.get()); diff --git a/src/terminal/main.rs b/src/terminal/main.rs index 9442f61..9ebb33c 100644 --- a/src/terminal/main.rs +++ b/src/terminal/main.rs @@ -13,7 +13,7 @@ extern crate libc; extern crate syscall; use orbclient::event; -use std::{env, str}; +use std::{cmp, env, str}; use std::error::Error; use std::fs::{File, OpenOptions}; use std::io::{self, Result, Read, Write}; @@ -206,8 +206,8 @@ fn main() { let slave_stdout = OpenOptions::new().read(false).write(true).open(&tty_path).unwrap(); let slave_stderr = OpenOptions::new().read(false).write(true).open(&tty_path).unwrap(); - let width = 800; - let height = 576; + let (display_width, display_height) = orbclient::get_display_size().expect("viewer: failed to get display size"); + let (width, height) = (cmp::min(800, display_width * 4/5), cmp::min(576, display_height * 4/5)); env::set_var("COLUMNS", format!("{}", width / 8)); env::set_var("LINES", format!("{}", height / 16)); -- GitLab