From 77911f6418ceb771c5f0b6b2aa33328c7aa5530a Mon Sep 17 00:00:00 2001
From: Matthias Nott <mnott@mnsoft.org>
Date: Wed, 08 Jul 2026 18:28:29 +0200
Subject: [PATCH] feat: continuous text selection, Cmd+Enter to send, deploy.sh OTA/iPad targets

---
 lib/widgets/input_bar.dart |   45 ++++++++++++++++++++++++++++++---------------
 1 files changed, 30 insertions(+), 15 deletions(-)

diff --git a/lib/widgets/input_bar.dart b/lib/widgets/input_bar.dart
index 5ba3fa2..ae191b3 100644
--- a/lib/widgets/input_bar.dart
+++ b/lib/widgets/input_bar.dart
@@ -1,4 +1,5 @@
 import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
 
 import '../providers/providers.dart';
 import '../theme/app_theme.dart';
@@ -97,23 +98,37 @@
         const SizedBox(width: 8),
         // Text field
         Expanded(
-          child: TextField(
-            controller: textController,
-            decoration: InputDecoration(
-              hintText: 'Type a message...',
-              filled: true,
-              fillColor: isDark ? AppColors.darkInputBg : AppColors.lightInputBg,
-              border: OutlineInputBorder(
-                borderRadius: BorderRadius.circular(24),
-                borderSide: BorderSide.none,
+          child: CallbackShortcuts(
+            // Cmd+Enter (or Ctrl+Enter on other keyboards) sends the message.
+            // Plain Enter still inserts a newline (textInputAction: newline).
+            bindings: <ShortcutActivator, VoidCallback>{
+              const SingleActivator(LogicalKeyboardKey.enter, meta: true):
+                  onSendText,
+              const SingleActivator(LogicalKeyboardKey.enter, control: true):
+                  onSendText,
+            },
+            child: TextField(
+              controller: textController,
+              decoration: InputDecoration(
+                hintText: 'Type a message...',
+                filled: true,
+                fillColor: isDark
+                    ? AppColors.darkInputBg
+                    : AppColors.lightInputBg,
+                border: OutlineInputBorder(
+                  borderRadius: BorderRadius.circular(24),
+                  borderSide: BorderSide.none,
+                ),
+                contentPadding: const EdgeInsets.symmetric(
+                  horizontal: 16,
+                  vertical: 10,
+                ),
+                isDense: true,
               ),
-              contentPadding:
-                  const EdgeInsets.symmetric(horizontal: 16, vertical: 10),
-              isDense: true,
+              textInputAction: TextInputAction.newline,
+              maxLines: 4,
+              minLines: 1,
             ),
-            textInputAction: TextInputAction.newline,
-            maxLines: 4,
-            minLines: 1,
           ),
         ),
         const SizedBox(width: 8),

--
Gitblit v1.3.1