Skip to content

Commit ebc085c

Browse files
authored
Merge pull request #687 from 4gray/fix/ui-fixes
fix/ui-fixes
2 parents ba9932a + a5685ef commit ebc085c

File tree

4 files changed

+65
-8
lines changed

4 files changed

+65
-8
lines changed

apps/electron-backend/src/app/app.ts

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { BrowserWindow, screen, shell } from 'electron';
1+
import { BrowserWindow, Menu, screen, shell } from 'electron';
22
import { join } from 'path';
33
import { environment } from '../environments/environment';
44
import { rendererAppName, rendererAppPort } from './constants';
@@ -115,6 +115,43 @@ export default class App {
115115
store.set(WINDOW_BOUNDS, App.mainWindow.getNormalBounds());
116116
}
117117
});
118+
119+
// Enable context menu for input fields only
120+
App.mainWindow.webContents.on('context-menu', (event, params) => {
121+
const { isEditable, editFlags } = params;
122+
123+
// Check if this is an editable field (input, textarea, contenteditable)
124+
// editFlags.canPaste is a good indicator of an input field
125+
if (isEditable && editFlags.canPaste) {
126+
const menu = Menu.buildFromTemplate([
127+
{
128+
label: 'Cut',
129+
role: 'cut',
130+
enabled: editFlags.canCut,
131+
},
132+
{
133+
label: 'Copy',
134+
role: 'copy',
135+
enabled: editFlags.canCopy,
136+
},
137+
{
138+
label: 'Paste',
139+
role: 'paste',
140+
enabled: editFlags.canPaste,
141+
},
142+
{
143+
type: 'separator',
144+
},
145+
{
146+
label: 'Select All',
147+
role: 'selectAll',
148+
enabled: editFlags.canSelectAll,
149+
},
150+
]);
151+
152+
menu.popup();
153+
}
154+
});
118155
}
119156

120157
private static loadMainWindow() {

apps/web/src/app/home/video-player/video-player.component.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,10 @@ export class VideoPlayerComponent implements OnInit {
368368
*/
369369
@HostListener('document:keydown.i', ['$event'])
370370
handleInfoKeyPress(event: Event): void {
371+
// Don't trigger hotkeys when user is typing in input fields
372+
if (this.isTypingInInput(event)) {
373+
return;
374+
}
371375
// Prevent default behavior and show info overlay
372376
event.preventDefault();
373377
this.toggleInfoOverlay();
@@ -380,6 +384,10 @@ export class VideoPlayerComponent implements OnInit {
380384
handleKeyPress(event: KeyboardEvent): void {
381385
// Only handle digit keys (0-9)
382386
if (event.key >= '0' && event.key <= '9') {
387+
// Don't trigger hotkeys when user is typing in input fields
388+
if (this.isTypingInInput(event)) {
389+
return;
390+
}
383391
event.preventDefault();
384392
this.handleChannelNumberInput(event.key);
385393
}
@@ -453,4 +461,17 @@ export class VideoPlayerComponent implements OnInit {
453461
this.channelNumberTimeout = undefined;
454462
}
455463
}
464+
465+
/**
466+
* Check if the user is currently typing in an input or textarea field
467+
* @param event Keyboard event
468+
* @returns true if the event target is an input or textarea element
469+
*/
470+
private isTypingInInput(event: Event): boolean {
471+
const target = event.target;
472+
return (
473+
target instanceof HTMLInputElement ||
474+
target instanceof HTMLTextAreaElement
475+
);
476+
}
456477
}

apps/web/src/styles.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ html {
2323
font-family: Roboto, 'Helvetica Neue', sans-serif;
2424
}
2525

26+
// Re-enable context menu and text selection for input fields
27+
input,
28+
textarea {
29+
user-select: text;
30+
}
31+
2632
@media (display-mode: standalone) {
2733
body {
2834
overscroll-behavior-y: contain;

libs/ui/components/src/lib/recent-playlists/playlist-item/playlist-item.component.scss

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,6 @@ mat-list-item {
2626
margin-top: 2px !important;
2727
}
2828

29-
// Light theme
30-
@media (prefers-color-scheme: light) {
31-
.meta {
32-
color: rgba(0, 0, 0, 0.6);
33-
}
34-
}
35-
3629
.cdk-drag-preview {
3730
box-sizing: border-box;
3831
border-radius: 12px;

0 commit comments

Comments
 (0)