From ed2b699c63f1dd0005366ce7fb84f9c39a7bd27a Mon Sep 17 00:00:00 2001 From: Harishankar Date: Fri, 10 Dec 2010 16:16:37 +0530 Subject: [PATCH] Fixed the problem of focus changing on arrow key Fixed the problem of the focus changing from the puzzle grid when arrow keys are pressed by returning true when those keys are pressed --- player_mainwindow.py | 28 +++++++++++++++++++++------- playerwindow.glade | 2 +- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/player_mainwindow.py b/player_mainwindow.py index e167f03..6ba9137 100644 --- a/player_mainwindow.py +++ b/player_mainwindow.py @@ -211,6 +211,10 @@ along with GetAClue. If not, see .""" self.set_selection_of_num (anum) + # focus on the drawing area + puzgrid = self.ui.get_object ("puzzlegrid") + self.window.set_focus (puzgrid) + return False # callback for tree view "down" being activated @@ -223,6 +227,10 @@ along with GetAClue. If not, see .""" self.set_selection_of_num (dnum, False) + # focus on the drawing area + puzgrid = self.ui.get_object ("puzzlegrid") + self.window.set_focus (puzgrid) + # moving the current selection in grid by one up or down def move_selection_updown (self, step): # increase or reduce the row by step until an occupied grid is found @@ -322,58 +330,64 @@ along with GetAClue. If not, see .""" return False # callback for main window key release event - def on_mainwindow_key_press_event (self, window, event): + def on_puzzlegrid_key_press_event (self, drawarea, event): if self.puzzle: - drawarea = self.ui.get_object ("puzzlegrid") key = gtk.gdk.keyval_name (event.keyval).lower () - if event.state == gtk.gdk.SHIFT_MASK and key == "up": + if key == "up": # reduce the row by 1 until you find an occupied grid and not a # black block self.move_selection_updown (-1) self.typing_mode = self.DOWN drawarea.queue_draw () - elif event.state == gtk.gdk.SHIFT_MASK and key == "down": + return True + elif key == "down": # increase the row by 1 until you find an occupied grid and not a # black block self.move_selection_updown (1) self.typing_mode = self.DOWN drawarea.queue_draw () - elif event.state == gtk.gdk.SHIFT_MASK and key == "right": + return True + elif key == "right": # increase the column by 1 until you find an occupied grid and not # a black block self.move_selection_across (1) self.typing_mode = self.ACROSS drawarea.queue_draw () - elif event.state == gtk.gdk.SHIFT_MASK and key == "left": + return True + elif key == "left": # decrease the column by 1 until you find an occupied grid and not # a black block self.move_selection_across (-1) self.typing_mode = self.ACROSS drawarea.queue_draw () + return True # if it is A-Z or a-z then elif len (key) == 1 and key.isalpha (): guess_char = key.upper () self.set_guess (guess_char) drawarea.queue_draw () + return True # if it is the delete key then delete character at selected row/col elif key == "delete": self.puzzle.data[self.selected_row][self.selected_col].guess = None drawarea.queue_draw () + return True # if the key is space key then delete character and move across or # down one step depending on the mode elif key == "space": self.set_guess (None) drawarea.queue_draw () + return True # if it is backspace key then delete character at previous row/col # depending on the input mode. If across editing mode, then delete # at previous column else at previous row elif key == "backspace": self.delete_prev_guess () drawarea.queue_draw () + return True return False - # puzzle grid focus in event def on_puzzlegrid_focus_out_event (self, drawarea, event): if self.puzzle: diff --git a/playerwindow.glade b/playerwindow.glade index 90e4750..2727527 100644 --- a/playerwindow.glade +++ b/playerwindow.glade @@ -27,7 +27,6 @@ 480 resources/getaclue.svg - @@ -198,6 +197,7 @@ GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK + -- 2.20.1