Compare commits
1 commit
| Author | SHA1 | Date | |
|---|---|---|---|
| 10574773c6 |
7 changed files with 23 additions and 19 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -182,7 +182,7 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
|
|||
|
||||
[[package]]
|
||||
name = "comicviewer"
|
||||
version = "0.2.19"
|
||||
version = "0.2.20"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "comicviewer"
|
||||
version = "0.2.19"
|
||||
version = "0.2.20"
|
||||
edition = "2024"
|
||||
description = "A comic archive viewer for local and remote locations"
|
||||
license = "GPL-3.0-or-later"
|
||||
|
|
@ -8,7 +8,7 @@ license = "GPL-3.0-or-later"
|
|||
[dependencies]
|
||||
anyhow = "1.0"
|
||||
chrono = { version = "0.4", default-features = false, features = ["clock"] }
|
||||
gtk = { package = "gtk4", version = "0.10", features = ["v4_10"] }
|
||||
gtk = { package = "gtk4", version = "0.10", features = ["v4_12"] }
|
||||
image = { version = "0.25", default-features = false, features = ["avif-native", "bmp", "gif", "jpeg", "png", "webp"] }
|
||||
filetime = "0.2"
|
||||
flate2 = "1.0"
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
</provides>
|
||||
<content_rating type="oars-1.1" />
|
||||
<releases>
|
||||
<release version="0.2.20" date="2026-08-21" />
|
||||
<release version="0.2.19" date="2026-08-21" />
|
||||
<release version="0.2.18" date="2026-08-21" />
|
||||
<release version="0.2.17" date="2026-08-21" />
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ sudo pacman -S fuse2 gtk4 dav1d gvfs gvfs-smb gstreamer curl \
|
|||
```
|
||||
|
||||
- `fuse2`: AppImage 마운트 및 실행
|
||||
- `gtk4`, `dav1d`: 화면 표시와 이미지 디코딩
|
||||
- `gtk4` 4.12 이상, `dav1d`: 화면 표시와 이미지 디코딩
|
||||
- `gvfs`: FTP와 SFTP 접근
|
||||
- `gvfs-smb`: SMB 공유 접근
|
||||
- `gstreamer`, `gst-plugins-*`, `gst-libav`: MP4 등 동영상 재생
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ AppImage 빌드가 끝나면 다음 스크립트로 체크섬과 통합 `tar.gz`
|
|||
|
||||
스크립트는 `Cargo.toml`에서 버전을 읽고 다음 파일을 생성합니다.
|
||||
|
||||
- `dist/Comicviewer-0.2.19-x86_64.AppImage.sha256`
|
||||
- `dist/Comicviewer-0.2.20-x86_64.AppImage.sha256`
|
||||
- `dist/Comicviewer-latest-x86_64.tar.gz`
|
||||
- `dist/Comicviewer-latest-x86_64.tar.gz.sha256`
|
||||
|
||||
|
|
@ -78,10 +78,10 @@ sha256sum -c Comicviewer-latest-x86_64.tar.gz.sha256
|
|||
|
||||
```sh
|
||||
git add Cargo.toml Cargo.lock data packaging README.md docs
|
||||
git commit -m "Release v0.2.19"
|
||||
git tag -a v0.2.19 -m "Comicviewer v0.2.19"
|
||||
git commit -m "Release v0.2.20"
|
||||
git tag -a v0.2.20 -m "Comicviewer v0.2.20"
|
||||
git push origin main
|
||||
git push origin v0.2.19
|
||||
git push origin v0.2.20
|
||||
```
|
||||
|
||||
이미 원격에 공개한 태그는 이동하거나 덮어쓰지 않습니다. 수정이 필요하면 새
|
||||
|
|
|
|||
|
|
@ -1872,8 +1872,8 @@ impl ViewerController {
|
|||
if (zoom - 1.0).abs() >= f64::EPSILON {
|
||||
let (width, height) = zoomed_picture_request(
|
||||
self.view_mode(),
|
||||
self.single_scrolled.allocated_width().max(1),
|
||||
self.single_scrolled.allocated_height().max(1),
|
||||
self.single_scrolled.width().max(1),
|
||||
self.single_scrolled.height().max(1),
|
||||
texture_width,
|
||||
texture_height,
|
||||
zoom,
|
||||
|
|
@ -1891,7 +1891,7 @@ impl ViewerController {
|
|||
self.single_picture.set_size_request(width, height);
|
||||
} else if let Some((width, height)) = single_picture_request(
|
||||
self.view_mode(),
|
||||
self.stack.allocated_width().max(1),
|
||||
self.stack.width().max(1),
|
||||
texture_width,
|
||||
texture_height,
|
||||
) {
|
||||
|
|
@ -1935,8 +1935,8 @@ impl ViewerController {
|
|||
};
|
||||
drop(state);
|
||||
let count = visible.len().max(1) as i32;
|
||||
let viewport_width = (self.spread_scrolled.allocated_width().max(1) - 8) / count;
|
||||
let viewport_height = self.spread_scrolled.allocated_height().max(1);
|
||||
let viewport_width = (self.spread_scrolled.width().max(1) - 8) / count;
|
||||
let viewport_height = self.spread_scrolled.height().max(1);
|
||||
self.spread_box.set_homogeneous(false);
|
||||
self.spread_box.set_halign(gtk::Align::Center);
|
||||
self.spread_box.set_valign(gtk::Align::Center);
|
||||
|
|
@ -2177,7 +2177,7 @@ impl ViewerController {
|
|||
}
|
||||
|
||||
fn continuous_content_width(&self) -> i32 {
|
||||
continuous_content_width(self.stack.allocated_width())
|
||||
continuous_content_width(self.stack.width())
|
||||
}
|
||||
|
||||
fn evict_cache(&self) {
|
||||
|
|
@ -3071,8 +3071,8 @@ impl MediaViewerController {
|
|||
if (zoom - 1.0).abs() >= f64::EPSILON {
|
||||
let (width, height) = zoomed_picture_request(
|
||||
self.image_view_mode(),
|
||||
self.image_scrolled.allocated_width().max(1),
|
||||
self.image_scrolled.allocated_height().max(1),
|
||||
self.image_scrolled.width().max(1),
|
||||
self.image_scrolled.height().max(1),
|
||||
texture_width,
|
||||
texture_height,
|
||||
zoom,
|
||||
|
|
@ -3090,7 +3090,7 @@ impl MediaViewerController {
|
|||
self.picture.set_size_request(width, height);
|
||||
} else if let Some((width, height)) = single_picture_request(
|
||||
self.image_view_mode(),
|
||||
self.stack.allocated_width().max(1),
|
||||
self.stack.width().max(1),
|
||||
texture_width,
|
||||
texture_height,
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -848,8 +848,11 @@ impl BrowserController {
|
|||
drop(state);
|
||||
|
||||
if let Some(index) = found {
|
||||
self.list_selection.set_selected(index as u32);
|
||||
let _ = self.list_view.grab_focus();
|
||||
self.list_view.scroll_to(
|
||||
index as u32,
|
||||
gtk::ListScrollFlags::FOCUS | gtk::ListScrollFlags::SELECT,
|
||||
None,
|
||||
);
|
||||
self.status_label.set_text(&format!(
|
||||
"'{query}'로 이동: {}",
|
||||
found_name.unwrap_or_default()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue