Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add C-. force-reset to unselect all and remove all mod keys #293

Merged
merged 1 commit into from
Nov 30, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions mfp/gui/app_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,7 @@ def active_layer(self):

return self.selected_layer

def active_group(self):
return self.active_layer().group

# FIXME Clutter
def ready(self):
if self.window and self.window.get_realized():
return True
Expand Down Expand Up @@ -206,7 +204,6 @@ async def add_element(self, factory, x=None, y=None):
self.register(b)
self.refresh(b)
await self.select(b)

await b.begin_edit()
return True

Expand Down
2 changes: 1 addition & 1 deletion mfp/gui/app_window_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def obj_name_edited(obj, new_name):
else:
parent = (self.selected_patch,)

self.object_view.update(obj, parent)
self.signal_emit("rename", obj, parent)

async def obj_selected(obj):
await self._select(obj)
Expand Down
4 changes: 4 additions & 0 deletions mfp/gui/clutter/app_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,11 @@ async def on_create(window, signal, element):
(element.layer.scope, element.layer.patch),
)

def on_rename(window, signal, obj, parent):
object_view.update(obj, parent)

self.wrapper.signal_listen("created", on_create)
self.wrapper.signal_listen("rename", on_rename)

return object_view

Expand Down
2 changes: 1 addition & 1 deletion mfp/gui/clutter/processor_element.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@

Copyright (c) Bill Gribble <[email protected]>
"""
import math

from gi.repository import Clutter
import cairo

from mfp import log
from ..colordb import ColorDB
from .base_element import ClutterBaseElementBackend
from ..processor_element import (
Expand Down
3 changes: 3 additions & 0 deletions mfp/gui/input_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ def modekey(a):
mode.enable()

def disable_minor_mode(self, mode):
if mode not in self.minor_modes:
return

cb = mode.disable()
if inspect.isawaitable(cb):
MFPGUI().async_task(cb)
Expand Down
2 changes: 2 additions & 0 deletions mfp/gui/mfp.glade
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
<object class="GtkWindow" id="main_window">
<property name="can_focus">False</property>
<property name="title" translatable="yes">MFP</property>
<property name="width_request">1000</property>
<property name="height_request">800</property>
<property name="default_width">1000</property>
<property name="default_height">800</property>
<child>
Expand Down
13 changes: 13 additions & 0 deletions mfp/gui/modes/global_mode.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ def __init__(self, window):
self.bind("HOVER", lambda: self.hover(False))
self.bind("S-HOVER", lambda: self.hover(True))

self.bind('C-.', self.force_reset, "Reset all modifier keys and input modes")
self.bind('S-C-.', self.force_reset, "Reset all modifier keys and input modes")
self.bind('M1-C-.', self.force_reset, "Reset all modifier keys and input modes")

def inspect(self):
from flopsy import Store
Store.show_inspector(event_loop=MFPGUI().async_task.asyncio_loop)
Expand Down Expand Up @@ -122,6 +126,15 @@ def _refresh(self):
self.window.backend.content_console_pane.set_position(oldpos - 1)
return False

async def force_reset(self):
await self.window.unselect_all()

while self.manager.minor_modes:
self.manager.disable_minor_mode(self.manager.minor_modes[0])

self.manager.keyseq.mouse_buttons = set()
self.manager.keyseq.mod_keys = set()

async def transient_msg(self):
from ..message_element import TransientMessageElement
if self.window.selected:
Expand Down
8 changes: 4 additions & 4 deletions mfp/gui/modes/label_edit.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#! /usr/bin/env python
'''
label_edit.py: Minor mode for editing contents of a clutter.Text label
label_edit.py: Minor mode for editing contents of a label

Copyright (c) 2010 Bill Gribble <[email protected]>
Copyright (c) Bill Gribble <[email protected]>
'''

import asyncio
Expand Down Expand Up @@ -136,6 +136,7 @@ def paste(self):
def set_selection(self, start, end):
self.selection_start = start
self.selection_end = end
self.update_label(raw=True)
self.widget.set_selection(start, end)

def delete_selection(self):
Expand Down Expand Up @@ -254,7 +255,6 @@ def text_changed(self, *args):

self.undo_stack.append((self.text, self.editpos))
self.text = new_text
return True

editpos = self.widget.get_cursor_position()
if editpos == -1:
Expand All @@ -264,7 +264,7 @@ def text_changed(self, *args):
else:
self.editpos = change_at

return
return True

async def commit_edits(self):
self.text = self.widget.get_text()
Expand Down