fix: ok tuşları + buton hover/siyah border + çift tıklama cover
Build Windows / build-windows (push) Has been cancelled

This commit is contained in:
Alhan committed 2026-07-22 05:20:07 +03:00
1 parent 86a63e0bb6
commit 35ac949f4e
6 files changed
+70 -26

No files matched your search

Binary file not shown.
Binary file not shown.
+19 -17
View File
@@ -11,16 +11,28 @@ class AppShortcuts extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return CallbackShortcuts( return Focus(
bindings: { autofocus: true,
// Navigate images onKeyEvent: (node, event) {
const SingleActivator(LogicalKeyboardKey.arrowLeft): () { if (event is KeyDownEvent) {
switch (event.logicalKey) {
case LogicalKeyboardKey.arrowLeft:
ImageManager.instance.previousImage(); ImageManager.instance.previousImage();
}, return KeyEventResult.handled;
const SingleActivator(LogicalKeyboardKey.arrowRight): () { case LogicalKeyboardKey.arrowRight:
ImageManager.instance.nextImage(); ImageManager.instance.nextImage();
return KeyEventResult.handled;
case LogicalKeyboardKey.escape:
windowManager.isFullScreen().then((isFullscreen) {
if (isFullscreen) windowManager.setFullScreen(false);
});
return KeyEventResult.handled;
}
}
return KeyEventResult.ignored;
}, },
child: CallbackShortcuts(
bindings: {
// Open file dialog // Open file dialog
const SingleActivator( const SingleActivator(
LogicalKeyboardKey.keyO, LogicalKeyboardKey.keyO,
@@ -35,14 +47,6 @@ class AppShortcuts extends StatelessWidget {
await windowManager.setFullScreen(!isFullscreen); await windowManager.setFullScreen(!isFullscreen);
}, },
// Exit fullscreen
const SingleActivator(LogicalKeyboardKey.escape): () async {
final isFullscreen = await windowManager.isFullScreen();
if (isFullscreen) {
await windowManager.setFullScreen(false);
}
},
// Quit // Quit
const SingleActivator( const SingleActivator(
LogicalKeyboardKey.keyQ, LogicalKeyboardKey.keyQ,
@@ -51,8 +55,6 @@ class AppShortcuts extends StatelessWidget {
windowManager.close(); windowManager.close();
}, },
}, },
child: Focus(
autofocus: true,
child: child, child: child,
), ),
); );
+27 -4
View File
@@ -41,22 +41,45 @@ class CustomTitleBar extends StatelessWidget {
} }
} }
class _BarButton extends StatelessWidget { class _BarButton extends StatefulWidget {
final IconData icon; final IconData icon;
final VoidCallback onTap; final VoidCallback onTap;
const _BarButton({required this.icon, required this.onTap}); const _BarButton({required this.icon, required this.onTap});
@override
State<_BarButton> createState() => _BarButtonState();
}
class _BarButtonState extends State<_BarButton> {
bool _hovered = false;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return GestureDetector( return GestureDetector(
onTap: onTap, onTap: widget.onTap,
child: MouseRegion( child: MouseRegion(
cursor: SystemMouseCursors.click, cursor: SystemMouseCursors.click,
child: SizedBox( onEnter: (_) => setState(() => _hovered = true),
onExit: (_) => setState(() => _hovered = false),
child: Container(
width: 36, width: 36,
height: 28, height: 28,
child: Icon(icon, color: Colors.white54, size: 16), decoration: BoxDecoration(
border: Border.all(
color: Colors.black54,
width: 1,
),
color: _hovered ? Colors.red.withValues(alpha: 0.7) : Colors.transparent,
borderRadius: const BorderRadius.only(
topRight: Radius.circular(4),
),
),
child: Icon(
widget.icon,
color: Colors.white,
size: 14,
),
), ),
), ),
); );
+24 -5
View File
@@ -112,10 +112,11 @@ class _ImageCanvasState extends State<ImageCanvas> {
maxScale: 10.0, maxScale: 10.0,
panEnabled: true, panEnabled: true,
scaleEnabled: false, scaleEnabled: false,
child: Center( child: _isFilled
? SizedBox.expand(
child: Image.file( child: Image.file(
File(widget.filePath), File(widget.filePath),
fit: _isFilled ? BoxFit.cover : BoxFit.contain, fit: BoxFit.cover,
filterQuality: FilterQuality.high, filterQuality: FilterQuality.high,
errorBuilder: (context, error, stackTrace) { errorBuilder: (context, error, stackTrace) {
return const Center( return const Center(
@@ -124,10 +125,28 @@ class _ImageCanvasState extends State<ImageCanvas> {
children: [ children: [
Icon(Icons.broken_image, size: 48, color: Colors.white38), Icon(Icons.broken_image, size: 48, color: Colors.white38),
SizedBox(height: 8), SizedBox(height: 8),
Text( Text('Resim yüklenemedi',
'Resim yüklenemedi', style: TextStyle(color: Colors.white38)),
style: TextStyle(color: Colors.white38), ],
), ),
);
},
),
)
: Center(
child: Image.file(
File(widget.filePath),
fit: BoxFit.contain,
filterQuality: FilterQuality.high,
errorBuilder: (context, error, stackTrace) {
return const Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.broken_image, size: 48, color: Colors.white38),
SizedBox(height: 8),
Text('Resim yüklenemedi',
style: TextStyle(color: Colors.white38)),
], ],
), ),
); );
Binary file not shown.