forked from Shinonome/dots-hyprland
sidebar: focus chat entry on hover
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
const { Gdk } = imports.gi;
|
const { Gdk } = imports.gi;
|
||||||
|
|
||||||
export function setupCursorHover(button) {
|
export function setupCursorHover(button) { // Hand pointing cursor on hover
|
||||||
const display = Gdk.Display.get_default();
|
const display = Gdk.Display.get_default();
|
||||||
button.connect('enter-notify-event', () => {
|
button.connect('enter-notify-event', () => {
|
||||||
const cursor = Gdk.Cursor.new_from_name(display, 'pointer');
|
const cursor = Gdk.Cursor.new_from_name(display, 'pointer');
|
||||||
@@ -14,7 +14,7 @@ export function setupCursorHover(button) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setupCursorHoverAim(button) {
|
export function setupCursorHoverAim(button) { // Crosshair cursor on hover
|
||||||
button.connect('enter-notify-event', () => {
|
button.connect('enter-notify-event', () => {
|
||||||
const display = Gdk.Display.get_default();
|
const display = Gdk.Display.get_default();
|
||||||
const cursor = Gdk.Cursor.new_from_name(display, 'crosshair');
|
const cursor = Gdk.Cursor.new_from_name(display, 'crosshair');
|
||||||
@@ -28,7 +28,7 @@ export function setupCursorHoverAim(button) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setupCursorHoverGrab(button) {
|
export function setupCursorHoverGrab(button) { // Hand ready to grab on hover
|
||||||
button.connect('enter-notify-event', () => {
|
button.connect('enter-notify-event', () => {
|
||||||
const display = Gdk.Display.get_default();
|
const display = Gdk.Display.get_default();
|
||||||
const cursor = Gdk.Cursor.new_from_name(display, 'grab');
|
const cursor = Gdk.Cursor.new_from_name(display, 'grab');
|
||||||
@@ -42,7 +42,7 @@ export function setupCursorHoverGrab(button) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setupCursorHoverInfo(button) {
|
export function setupCursorHoverInfo(button) { // "?" mark cursor on hover
|
||||||
const display = Gdk.Display.get_default();
|
const display = Gdk.Display.get_default();
|
||||||
button.connect('enter-notify-event', () => {
|
button.connect('enter-notify-event', () => {
|
||||||
const cursor = Gdk.Cursor.new_from_name(display, 'help');
|
const cursor = Gdk.Cursor.new_from_name(display, 'help');
|
||||||
@@ -55,43 +55,3 @@ export function setupCursorHoverInfo(button) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// failed radial ripple experiment
|
|
||||||
//
|
|
||||||
// var clicked = false;
|
|
||||||
// var dummy = false;
|
|
||||||
// var cursorX = 0;
|
|
||||||
// var cursorY = 0;
|
|
||||||
// const styleContext = button.get_style_context();
|
|
||||||
// var clickColor = styleContext.get_property('background-color', Gtk.StateFlags.HOVER);
|
|
||||||
// clickColor.green += CLICK_BRIGHTEN_AMOUNT;
|
|
||||||
// clickColor.blue += CLICK_BRIGHTEN_AMOUNT;
|
|
||||||
// clickColor.red += CLICK_BRIGHTEN_AMOUNT;
|
|
||||||
// clickColor = clickColor.to_string();
|
|
||||||
// button.add_events(Gdk.EventMask.POINTER_MOTION_MASK);
|
|
||||||
// button.connect('motion-notify-event', (widget, event) => {
|
|
||||||
// [dummy, cursorX, cursorY] = event.get_coords(); // Get the mouse coordinates relative to the widget
|
|
||||||
// if(!clicked) widget.css = `
|
|
||||||
// background-image: radial-gradient(circle at ${cursorX}px ${cursorY}px, rgba(0,0,0,0), rgba(0,0,0,0) 0%, rgba(0,0,0,0) 0%, ${clickColor} 0%, ${clickColor} 0%, ${clickColor} 0%, ${clickColor} 0%, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 0%);
|
|
||||||
// `;
|
|
||||||
// });
|
|
||||||
|
|
||||||
// button.connect('button-press-event', (widget, event) => {
|
|
||||||
// clicked = true;
|
|
||||||
// [dummy, cursorX, cursorY] = event.get_coords(); // Get the mouse coordinates relative to the widget
|
|
||||||
// cursorX = Math.round(cursorX); cursorY = Math.round(cursorY);
|
|
||||||
// widget.css = `
|
|
||||||
// background-image: radial-gradient(circle at ${cursorX}px ${cursorY}px, rgba(0,0,0,0), rgba(0,0,0,0) 0%, rgba(0,0,0,0) 0%, ${clickColor} 0%, ${clickColor} 0%, ${clickColor} 0%, ${clickColor} 0%, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 0%);
|
|
||||||
// `;
|
|
||||||
// widget.toggleClassName('growingRadial', true);
|
|
||||||
// widget.css = `
|
|
||||||
// background-image: radial-gradient(circle at ${cursorX}px ${cursorY}px, rgba(0,0,0,0), rgba(0,0,0,0) 0%, rgba(0,0,0,0) 0%, ${clickColor} 0%, ${clickColor} 0%, ${clickColor} 70%, ${clickColor} 70%, rgba(0,0,0,0) 70%, rgba(0,0,0,0) 70%);
|
|
||||||
// `
|
|
||||||
// });
|
|
||||||
// button.connect('button-release-event', (widget, event) => {
|
|
||||||
// widget.toggleClassName('growingRadial', false);
|
|
||||||
// widget.toggleClassName('fadingRadial', false);
|
|
||||||
// widget.css = `
|
|
||||||
// background-image: radial-gradient(circle at ${cursorX}px ${cursorY}px, rgba(0,0,0,0), rgba(0,0,0,0) 0%, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 70%, rgba(0,0,0,0) 70%, rgba(0,0,0,0) 70%, rgba(0,0,0,0) 70%);
|
|
||||||
// `
|
|
||||||
// clicked = false;
|
|
||||||
// });
|
|
||||||
|
|||||||
@@ -72,6 +72,9 @@ export const chatEntry = TextView({
|
|||||||
acceptsTab: false,
|
acceptsTab: false,
|
||||||
className: 'sidebar-chat-entry txt txt-smallie',
|
className: 'sidebar-chat-entry txt txt-smallie',
|
||||||
setup: (self) => self
|
setup: (self) => self
|
||||||
|
.hook(App, (self, currentName, visible) => {
|
||||||
|
if (currentName === 'sideleft' && visible) self.grab_focus();
|
||||||
|
})
|
||||||
.hook(ChatGPT, (self) => {
|
.hook(ChatGPT, (self) => {
|
||||||
if (APIS[currentApiId].name != 'Assistant (ChatGPT 3.5)') return;
|
if (APIS[currentApiId].name != 'Assistant (ChatGPT 3.5)') return;
|
||||||
self.placeholderText = (ChatGPT.key.length > 0 ? 'Message ChatGPT...' : 'Enter OpenAI API Key...');
|
self.placeholderText = (ChatGPT.key.length > 0 ? 'Message ChatGPT...' : 'Enter OpenAI API Key...');
|
||||||
|
|||||||
@@ -119,13 +119,7 @@ const pinButton = Button({
|
|||||||
child: MaterialIcon('push_pin', 'larger'),
|
child: MaterialIcon('push_pin', 'larger'),
|
||||||
tooltipText: 'Pin sidebar (Ctrl+P)',
|
tooltipText: 'Pin sidebar (Ctrl+P)',
|
||||||
onClicked: (self) => self.attribute.toggle(self),
|
onClicked: (self) => self.attribute.toggle(self),
|
||||||
// Focus Pin button on open. Hit keybind -> space/enter = toggle pin state
|
setup: setupCursorHover,
|
||||||
setup: (self) => self
|
|
||||||
.hook(App, (self, currentName, visible) => {
|
|
||||||
if (currentName === 'sideleft' && visible)
|
|
||||||
self.grab_focus();
|
|
||||||
})
|
|
||||||
,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
export default () => Box({
|
export default () => Box({
|
||||||
|
|||||||
Reference in New Issue
Block a user