draw 2 rectangles to prevent the white rectangle from being invisible on
white backgrounds
This commit is contained in:
parent
f7b5288d03
commit
00d66f9712
3 changed files with 26 additions and 6 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -250,7 +250,7 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
|||
|
||||
[[package]]
|
||||
name = "leanshot"
|
||||
version = "0.4.0-rc"
|
||||
version = "0.4.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"image",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[package]
|
||||
name = "leanshot"
|
||||
description = "Screenshot capture for Linux."
|
||||
version = "0.4.0-rc"
|
||||
version = "0.4.0"
|
||||
repository = "https://git.mzhang.io/michael/leanshot"
|
||||
license-file = "LICENSE"
|
||||
edition = "2018"
|
||||
|
|
28
src/gui.rs
28
src/gui.rs
|
@ -140,7 +140,7 @@ impl Gui {
|
|||
&[
|
||||
(xcb::GC_FOREGROUND, screen.white_pixel()),
|
||||
(xcb::GC_BACKGROUND, screen.white_pixel()),
|
||||
(xcb::GC_LINE_WIDTH, 3),
|
||||
(xcb::GC_LINE_WIDTH, 1),
|
||||
],
|
||||
);
|
||||
|
||||
|
@ -175,18 +175,38 @@ impl Gui {
|
|||
let mut state = State::default();
|
||||
let mut cancelled = false;
|
||||
|
||||
let redraw = |state: &State| {
|
||||
let redraw = |state: &State| -> Result<()> {
|
||||
xcb_image::put(&self.conn, window_id, window_gc, &image.image, 0, 0);
|
||||
|
||||
if state.dragging {
|
||||
let rect = state.rect();
|
||||
xproto::change_gc(
|
||||
&self.conn,
|
||||
window_gc,
|
||||
&[(xcb::GC_FOREGROUND, screen.black_pixel())],
|
||||
);
|
||||
xproto::poly_rectangle(&self.conn, window_id, window_gc, &[rect]);
|
||||
|
||||
let rect2 = Rectangle::new(
|
||||
rect.x() + 1,
|
||||
rect.y() + 1,
|
||||
rect.width() - 2,
|
||||
rect.height() - 2,
|
||||
);
|
||||
xproto::change_gc(
|
||||
&self.conn,
|
||||
window_gc,
|
||||
&[(xcb::GC_FOREGROUND, screen.white_pixel())],
|
||||
);
|
||||
xproto::poly_rectangle(&self.conn, window_id, window_gc, &[rect2]);
|
||||
}
|
||||
|
||||
self.conn.flush();
|
||||
|
||||
Ok(())
|
||||
};
|
||||
|
||||
redraw(&state);
|
||||
redraw(&state)?;
|
||||
|
||||
while let Some(evt) = self.conn.wait_for_event() {
|
||||
match evt.response_type() {
|
||||
|
@ -234,7 +254,7 @@ impl Gui {
|
|||
}
|
||||
}
|
||||
|
||||
redraw(&state);
|
||||
redraw(&state)?;
|
||||
}
|
||||
|
||||
info!("Loop exited, cleaning up...");
|
||||
|
|
Loading…
Reference in a new issue