Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/view/frame/frame.py
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-03-17 13:30:23 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-03-17 13:30:23 (GMT)
commitebe043a4d20d408f04fb1a520fd5e707bbbf68db (patch)
tree5d461f12bc86afe962858775f53617cf3dc6ecb5 /shell/view/frame/frame.py
parent30ee6768a2049d467b6825a49745cf9552e113e3 (diff)
Refactored global key handling and frame logic.
Diffstat (limited to 'shell/view/frame/frame.py')
-rw-r--r--shell/view/frame/frame.py43
1 files changed, 21 insertions, 22 deletions
diff --git a/shell/view/frame/frame.py b/shell/view/frame/frame.py
index 11aea67..aa152ef 100644
--- a/shell/view/frame/frame.py
+++ b/shell/view/frame/frame.py
@@ -13,6 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+import logging
import gtk
import gobject
@@ -77,38 +78,36 @@ class _MouseListener(object):
_FRAME_HIDING_DELAY, self._hide_frame_timeout_cb)
class _KeyListener(object):
+ _HIDDEN = 1
+ _SHOWN_PRESSED = 2
+ _SHOWN_REPEAT = 3
+ _SHOWN_RELEASED = 4
+
def __init__(self, frame):
self._frame = frame
- self._hide_sid = 0
+ self._state = _KeyListener._HIDDEN
def key_press(self):
if self._frame.mode != MODE_NONE and \
self._frame.mode != MODE_KEYBOARD:
return
- if self._frame.visible:
- self._hide_frame()
- else:
- self._show_frame()
+ if self._state == _KeyListener._HIDDEN:
+ self._frame.show()
+ self._frame.mode = MODE_KEYBOARD
+ self._state = _KeyListener._SHOWN_PRESSED
+ elif self._state == _KeyListener._SHOWN_PRESSED:
+ self._state = _KeyListener._SHOWN_REPEAT
+ elif self._state == _KeyListener._SHOWN_RELEASED:
+ self._frame.hide()
+ self._state = _KeyListener._HIDDEN
def key_release(self):
- self._hide_frame()
-
- def _hide_frame_timeout_cb(self):
- self._frame.hide()
- return False
-
- def _show_frame(self):
- if self._hide_sid != 0:
- gobject.source_remove(self._hide_sid)
- self._frame.show()
- self._frame.mode = MODE_KEYBOARD
-
- def _hide_frame(self):
- if self._hide_sid != 0:
- gobject.source_remove(self._hide_sid)
- self._hide_sid = gobject.timeout_add(
- 100, self._hide_frame_timeout_cb)
+ if self._state == _KeyListener._SHOWN_PRESSED:
+ self._state = _KeyListener._SHOWN_RELEASED
+ elif self._state == _KeyListener._SHOWN_REPEAT:
+ self._frame.hide()
+ self._state = _KeyListener._HIDDEN
class Frame(object):
def __init__(self, shell):