Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gnome-sudoku for openSUSE:Factory checked in at 2023-12-02 17:12:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gnome-sudoku (Old) and /work/SRC/openSUSE:Factory/.gnome-sudoku.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-sudoku" Sat Dec 2 17:12:56 2023 rev:50 rq:1130320 version:45.3 Changes: -------- --- /work/SRC/openSUSE:Factory/gnome-sudoku/gnome-sudoku.changes 2023-10-23 23:41:16.228194567 +0200 +++ /work/SRC/openSUSE:Factory/.gnome-sudoku.new.25432/gnome-sudoku.changes 2023-12-02 17:13:09.193304447 +0100 @@ -1,0 +2,10 @@ +Fri Dec 1 15:00:14 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 45.3: + + Adjust red warning color to be brighter, to help colorblind + users + + Fix earmarks not being checked for warnings + + Fix crash when using arrow keys with no cell selected + + Fix criticals when adding earmarks introduced in 45.2 + +------------------------------------------------------------------- Old: ---- gnome-sudoku-45.2.tar.xz New: ---- gnome-sudoku-45.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gnome-sudoku.spec ++++++ --- /var/tmp/diff_new_pack.zCgU7D/_old 2023-12-02 17:13:09.821327462 +0100 +++ /var/tmp/diff_new_pack.zCgU7D/_new 2023-12-02 17:13:09.821327462 +0100 @@ -17,7 +17,7 @@ Name: gnome-sudoku -Version: 45.2 +Version: 45.3 Release: 0 Summary: Sudoku Game for GNOME License: GPL-3.0-or-later ++++++ gnome-sudoku-45.2.tar.xz -> gnome-sudoku-45.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-sudoku-45.2/NEWS new/gnome-sudoku-45.3/NEWS --- old/gnome-sudoku-45.2/NEWS 2023-10-20 19:43:48.000000000 +0200 +++ new/gnome-sudoku-45.3/NEWS 2023-12-01 15:36:33.000000000 +0100 @@ -1,3 +1,11 @@ +45.3 - December 1, 2023 +======================= + + - Adjust red warning color to be brighter, to help colorblind users (#77) + - Fix earmarks not being checked for warnings (#78) + - Fix crash when using arrow keys with no cell selected (#80) + - Fix criticals when adding earmarks introduced in 45.2 + 45.2 - October 20, 2023 ======================= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-sudoku-45.2/data/org.gnome.Sudoku.appdata.xml.in new/gnome-sudoku-45.3/data/org.gnome.Sudoku.appdata.xml.in --- old/gnome-sudoku-45.2/data/org.gnome.Sudoku.appdata.xml.in 2023-10-20 19:43:48.000000000 +0200 +++ new/gnome-sudoku-45.3/data/org.gnome.Sudoku.appdata.xml.in 2023-12-01 15:36:33.000000000 +0100 @@ -47,6 +47,7 @@ <kudo>UserDocs</kudo> </kudos> <releases> + <release version="45.3" date="2023-12-01"/> <release version="45.2" date="2023-10-20"/> <release version="45.1" date="2023-10-14"/> <release version="45.0" date="2023-09-15"/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-sudoku-45.2/data/style.css new/gnome-sudoku-45.3/data/style.css --- old/gnome-sudoku-45.2/data/style.css 2023-10-20 19:43:48.000000000 +0200 +++ new/gnome-sudoku-45.3/data/style.css 2023-12-01 15:36:33.000000000 +0100 @@ -40,5 +40,6 @@ sudokucell.highlight-label > .earmark.error, sudokucell.selected > .earmark.error, sudokucell.error > label { - color: @destructive_color; + color: red; + font-weight: bold; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-sudoku-45.2/meson.build new/gnome-sudoku-45.3/meson.build --- old/gnome-sudoku-45.2/meson.build 2023-10-20 19:43:48.000000000 +0200 +++ new/gnome-sudoku-45.3/meson.build 2023-12-01 15:36:33.000000000 +0100 @@ -4,7 +4,7 @@ ], license: 'GPL3+', meson_version: '>= 0.59', - version: '45.2' + version: '45.3' ) application_id = 'org.gnome.Sudoku' add_project_arguments([ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-sudoku-45.2/po/ro.po new/gnome-sudoku-45.3/po/ro.po --- old/gnome-sudoku-45.2/po/ro.po 2023-10-20 19:43:48.000000000 +0200 +++ new/gnome-sudoku-45.3/po/ro.po 2023-12-01 15:36:33.000000000 +0100 @@ -11,9 +11,10 @@ msgstr "" "Project-Id-Version: gnome-games.HEAD.ro\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-sudoku/issues\n" -"POT-Creation-Date: 2020-12-31 18:10+0000\n" -"PO-Revision-Date: 2021-01-02 13:21+0200\n" -"Last-Translator: Florentina MuÈat <florentina.musat...@gmail.com>\n" +"POT-Creation-Date: 2023-06-25 11:56+0000\n" +"PO-Revision-Date: 2023-10-21 16:52+0300\n" +"Last-Translator: Florentina MuÈat <florentina [dot] musat [dot] 28 [at] " +"gmail [dot] com>\n" "Language-Team: Romanian Gnome Team <gnomero-l...@lists.sourceforge.net>\n" "Language: ro\n" "MIME-Version: 1.0\n" @@ -21,7 +22,7 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2);\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.4\n" "X-Launchpad-Export-Date: 2009-11-27 09:12+0000\n" #: data/sudoku-window.ui:7 @@ -29,82 +30,94 @@ msgstr "Puzzle _nou" #: data/sudoku-window.ui:11 +msgid "Create Custom Game" +msgstr "CreeazÄ joc personalizat" + +#: data/sudoku-window.ui:15 msgid "_Clear Board" msgstr "_ElibereazÄ tabla" -#: data/sudoku-window.ui:17 data/print-dialog.ui:38 +#: data/sudoku-window.ui:21 data/print-dialog.ui:77 msgid "_Print" msgstr "Ti_pÄreÈte" -#: data/sudoku-window.ui:20 +#: data/sudoku-window.ui:24 msgid "Print _Current Puzzleâ¦" msgstr "TipÄreÈte puzzle-ul _curentâ¦" -#: data/sudoku-window.ui:24 +#: data/sudoku-window.ui:28 msgid "Print _Multiple Puzzlesâ¦" msgstr "TipÄreÈte puzzle-uri _multipleâ¦" -#: data/sudoku-window.ui:32 +#: data/sudoku-window.ui:36 msgid "High_lighter" msgstr "_EvidenÈiere" -#: data/sudoku-window.ui:36 +#: data/sudoku-window.ui:40 msgid "_Warnings" msgstr "_Avertismente" -#: data/sudoku-window.ui:42 +#: data/sudoku-window.ui:46 msgid "_Help" msgstr "_Ajutor" -#: data/sudoku-window.ui:46 +#: data/sudoku-window.ui:50 msgid "_About Sudoku" msgstr "_Despre Sudoku" -#: data/sudoku-window.ui:52 data/sudoku-window.ui:57 -#: data/org.gnome.Sudoku.desktop.in:3 src/gnome-sudoku.vala:488 -#: src/sudoku-window.vala:212 +#: data/sudoku-window.ui:56 data/sudoku-window.ui:64 +#: data/org.gnome.Sudoku.desktop.in:3 src/gnome-sudoku.vala:489 +#: src/sudoku-window.vala:217 msgid "Sudoku" msgstr "Sudoku" -#: data/sudoku-window.ui:73 +#: data/sudoku-window.ui:72 msgid "Undo your last action" msgstr "AnuleazÄ ultima acÈiune" -#: data/sudoku-window.ui:94 +#: data/sudoku-window.ui:84 msgid "Redo your last action" msgstr "RefÄ ultima acÈiune" -#: data/sudoku-window.ui:126 +#: data/sudoku-window.ui:96 +msgid "Go back to the current game" +msgstr "NavigheazÄ Ã®napoi la jocul curent" + +#: data/sudoku-window.ui:107 +msgid "Main Menu" +msgstr "Meniu principal" + +#: data/sudoku-window.ui:115 msgid "Pause" msgstr "PauzÄ" -#: data/sudoku-window.ui:147 +#: data/sudoku-window.ui:127 msgid "Start playing the custom puzzle you have created" msgstr "ÃncepeÈi sÄ jucaÈi puzzle-ul personalizat pe care l-aÈi creat" -#: data/sudoku-window.ui:189 -msgid "Go back to the current game" -msgstr "NavigheazÄ Ã®napoi la jocul curent" - -#: data/sudoku-window.ui:233 data/print-dialog.ui:157 -msgid "_Easy" -msgstr "_Simplu" - -#: data/sudoku-window.ui:241 data/print-dialog.ui:172 -msgid "_Medium" -msgstr "_Mediu" - -#: data/sudoku-window.ui:249 data/print-dialog.ui:188 -msgid "_Hard" -msgstr "_Dificil" - -#: data/sudoku-window.ui:257 data/print-dialog.ui:204 -msgid "_Very Hard" -msgstr "_Foarte dificil" - -#: data/sudoku-window.ui:265 -msgid "_Create your own puzzle" -msgstr "_CreaÈi propriul puzzle" +#: data/sudoku-window.ui:153 +msgid "Select Game Difficulty" +msgstr "SelectaÈi dificultatea jocului" + +#: data/sudoku-window.ui:169 data/print-dialog.ui:58 +msgid "Easy" +msgstr "Simplu" + +#: data/sudoku-window.ui:180 data/print-dialog.ui:59 +msgid "Medium" +msgstr "Mediu" + +#: data/sudoku-window.ui:191 data/print-dialog.ui:60 +msgid "Hard" +msgstr "Dificil" + +#: data/sudoku-window.ui:202 data/print-dialog.ui:61 +msgid "Very Hard" +msgstr "Foarte dificil" + +#: data/sudoku-window.ui:212 +msgid "Start Game" +msgstr "Ãncepe jocul" #: data/org.gnome.Sudoku.appdata.xml.in:7 msgid "GNOME Sudoku" @@ -149,7 +162,7 @@ msgid "A GNOME sudoku game preview" msgstr "O previzualizare de joc sudoku GNOME" -#: data/org.gnome.Sudoku.appdata.xml.in:63 +#: data/org.gnome.Sudoku.appdata.xml.in:74 msgid "The GNOME Project" msgstr "Proiectul GNOME" @@ -202,62 +215,76 @@ "numÄr Èi numerele duplicate sunt evidenÈiate cu roÈu" #: data/org.gnome.Sudoku.gschema.xml:33 +msgid "Additionally warn when correct solution is violated or not earmarked" +msgstr "" +"Ãn plus, avertizaÈi când soluÈia corectÄ este încÄlcatÄ sau nu este marcatÄ" + +#: data/org.gnome.Sudoku.gschema.xml:34 +msgid "" +"Changes the background color of a square to red if the value does not match " +"puzzle solution, or if no earmark matches the puzzle solution" +msgstr "" +"ModificÄ culoarea de fundal a unui pÄtrat în roÈu dacÄ valoarea nu se " +"potriveÈte cu soluÈia puzzle-ului sau dacÄ niciun marcaj nu se potriveÈte cu " +"soluÈia puzzle-ului" + +#: data/org.gnome.Sudoku.gschema.xml:38 msgid "Highlight row, column and square that contain the selected cell" msgstr "EvidenÈiazÄ rândul, coloana Èi pÄtratul care conÈin celula selectatÄ" -#: data/org.gnome.Sudoku.gschema.xml:37 +#: data/org.gnome.Sudoku.gschema.xml:42 msgid "Width of the window in pixels" msgstr "LÄÈimea ferestrei în pixeli" -#: data/org.gnome.Sudoku.gschema.xml:41 +#: data/org.gnome.Sudoku.gschema.xml:46 msgid "Height of the window in pixels" msgstr "ÃnÄlÈimea ferestrei în pixeli" -#: data/org.gnome.Sudoku.gschema.xml:45 +#: data/org.gnome.Sudoku.gschema.xml:50 msgid "true if the window is maximized" msgstr "adevÄrat dacÄ fereastra este maximizatÄ" -#: data/print-dialog.ui:18 +#: data/org.gnome.Sudoku.gschema.xml:54 +msgid "Initialize the earmarks with the possible values for each cell" +msgstr "IniÈializeazÄ marcajele cu valorile posibile pentru fiecare celulÄ" + +#: data/print-dialog.ui:5 msgid "Print Multiple Puzzles" msgstr "TipÄreÈte puzzle-uri multiple" -#: data/print-dialog.ui:27 -msgid "_Cancel" -msgstr "_AnuleazÄ" - -#: data/print-dialog.ui:65 -msgid "_Number of puzzles" -msgstr "_NumÄrul de puzzle-uri" - -#: data/print-dialog.ui:101 -msgid "_Number of puzzles per page" -msgstr "_NumÄrul de puzzle-uri per paginÄ" +#: data/print-dialog.ui:28 +msgid "Number of Puzzles" +msgstr "NumÄrul de puzzle-uri" + +#: data/print-dialog.ui:41 +msgid "Number of puzzles per page" +msgstr "NumÄrul de puzzle-uri pe paginÄ" -#: data/print-dialog.ui:138 +#: data/print-dialog.ui:54 msgid "Difficulty" msgstr "Dificultate" -#: lib/sudoku-board.vala:591 +#: lib/sudoku-board.vala:657 msgid "Unknown Difficulty" msgstr "Dificultate necunoscutÄ" -#: lib/sudoku-board.vala:593 +#: lib/sudoku-board.vala:659 msgid "Easy Difficulty" msgstr "Dificultate simplÄ" -#: lib/sudoku-board.vala:595 +#: lib/sudoku-board.vala:661 msgid "Medium Difficulty" msgstr "Dificultate medie" -#: lib/sudoku-board.vala:597 +#: lib/sudoku-board.vala:663 msgid "Hard Difficulty" msgstr "Dificultate dificilÄ" -#: lib/sudoku-board.vala:599 +#: lib/sudoku-board.vala:665 msgid "Very Hard Difficulty" msgstr "Dificultate foarte dificilÄ" -#: lib/sudoku-board.vala:601 +#: lib/sudoku-board.vala:667 msgid "Custom Puzzle" msgstr "Puzzle personalizat" @@ -272,32 +299,36 @@ msgstr "AratÄ valorile posibile pentru fiecare celulÄ" #. Error dialog shown when starting a custom game that is not valid. -#: src/gnome-sudoku.vala:224 +#: src/gnome-sudoku.vala:239 msgid "The puzzle you have entered is not a valid Sudoku." msgstr "Puzzle-ul pe care l-aÈi introdus nu este un Sudoku valid." -#: src/gnome-sudoku.vala:224 +#: src/gnome-sudoku.vala:239 msgid "Please enter a valid puzzle." msgstr "IntroduceÈi un puzzle valid." +#: src/gnome-sudoku.vala:240 src/sudoku-printer.vala:46 +msgid "Close" +msgstr "Ãnchide" + #. Warning dialog shown when starting a custom game that has multiple solutions. -#: src/gnome-sudoku.vala:233 +#: src/gnome-sudoku.vala:248 msgid "The puzzle you have entered has multiple solutions." msgstr "Puzzle-ul pe care l-aÈi introdus are soluÈii multiple." -#: src/gnome-sudoku.vala:233 +#: src/gnome-sudoku.vala:248 msgid "Valid Sudoku puzzles have exactly one solution." msgstr "Puzzle-urile Sudoku valide au exact o soluÈie." -#: src/gnome-sudoku.vala:235 +#: src/gnome-sudoku.vala:249 msgid "_Back" msgstr "Ã_napoi" -#: src/gnome-sudoku.vala:236 +#: src/gnome-sudoku.vala:250 msgid "Play _Anyway" msgstr "JoacÄ oricum" -#: src/gnome-sudoku.vala:279 +#: src/gnome-sudoku.vala:292 #, c-format msgid "Well done, you completed the puzzle in %d minute!" msgid_plural "Well done, you completed the puzzle in %d minutes!" @@ -305,20 +336,28 @@ msgstr[1] "Foarte bine, aÈi completat puzzle-ul în %d minute!" msgstr[2] "Foarte bine, aÈi completat puzzle-ul în %d de minute!" -#: src/gnome-sudoku.vala:283 -msgid "_Quit" -msgstr "_IeÈire" +#: src/gnome-sudoku.vala:296 +msgid "Quit" +msgstr "IeÈire" -#: src/gnome-sudoku.vala:284 +#: src/gnome-sudoku.vala:297 msgid "Play _Again" msgstr "Juc_aÈi din nou" -#: src/gnome-sudoku.vala:390 +#: src/gnome-sudoku.vala:407 msgid "Reset the board to its original state?" msgstr "RestabiliÈi tabla la starea ei originalÄ?" +#: src/gnome-sudoku.vala:408 +msgid "No" +msgstr "Nu" + +#: src/gnome-sudoku.vala:409 +msgid "Yes" +msgstr "Da" + #. Appears on the About dialog. %s is the version of the QQwing puzzle generator in use. -#: src/gnome-sudoku.vala:485 +#: src/gnome-sudoku.vala:486 #, c-format msgid "" "The popular Japanese logic puzzle\n" @@ -335,7 +374,7 @@ "Mugurel Tudor <mugur...@gnome.ro>\n" "Lucian Adrian Grijincu <lucian.griji...@gmail.com>\n" "Florentina MuÈat <florentina [dot] musat [dot] 28 [at] gmail [dot] com>, " -"2019-2021\n" +"2019-2021, 2023\n" "\n" "Launchpad Contributions:\n" " Adi Roiban https://launchpad.net/~adiroiban\n" @@ -353,28 +392,32 @@ " Mugurel Tudor https://launchpad.net/~mugurelu-gnome\n" " leandrud https://launchpad.net/~leandrud" -#: src/number-picker.vala:85 +#: src/number-picker.vala:87 msgid "Clear" msgstr "ElibereazÄ" #. Error message if printing fails -#: src/sudoku-printer.vala:47 +#: src/sudoku-printer.vala:45 msgid "Error printing file:" msgstr "Eroare la tipÄrirea fiÈierului:" -#. Text on overlay when game is paused -#: src/sudoku-view.vala:634 -msgid "Paused" -msgstr "Pauzat" - -#: src/sudoku-window.vala:153 +#: src/sudoku-window.vala:156 msgid "Select Difficulty" msgstr "SelectaÈi dificultatea" -#: src/sudoku-window.vala:214 +#: src/sudoku-window.vala:219 msgid "Create Puzzle" msgstr "CreeazÄ un puzzle" +#~ msgid "_Create your own puzzle" +#~ msgstr "_CreaÈi propriul puzzle" + +#~ msgid "_Cancel" +#~ msgstr "_AnuleazÄ" + +#~ msgid "Paused" +#~ msgstr "Pauzat" + #~ msgid "Reset the board to its original state" #~ msgstr "RestabileÈte tabla la starea ei originalÄ" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-sudoku-45.2/src/number-picker.vala new/gnome-sudoku-45.3/src/number-picker.vala --- old/gnome-sudoku-45.2/src/number-picker.vala 2023-10-20 19:43:48.000000000 +0200 +++ new/gnome-sudoku-45.3/src/number-picker.vala 2023-12-01 15:36:33.000000000 +0100 @@ -131,12 +131,14 @@ } public void set_earmarks (int row, int col) + requires (is_earmark) { for (var i = 0; i < board.max_val; i++) set_earmark (row, col, i, board.is_earmark_enabled (row, col, i + 1)); } public void set_earmark (int row, int col, int index, bool state) + requires (is_earmark) { get_button_for (index).set_active (state); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-sudoku-45.2/src/sudoku-cell.vala new/gnome-sudoku-45.3/src/sudoku-cell.vala --- old/gnome-sudoku-45.2/src/sudoku-cell.vala 2023-10-20 19:43:48.000000000 +0200 +++ new/gnome-sudoku-45.3/src/sudoku-cell.vala 2023-12-01 15:36:33.000000000 +0100 @@ -275,7 +275,7 @@ { var new_state = !game.board.is_earmark_enabled (row, col, key); - if (number_picker != null) + if (number_picker != null && number_picker.is_earmark) { number_picker.set_earmark (row, col, key - 1, new_state); } @@ -491,43 +491,45 @@ public void check_warnings () { bool error = false; + int solution = game.board.get_solution (row, col); + var marks = game.board.get_earmarks (row, col); if (show_warnings && this.value == 0 && game.board.count_possibilities (row, col) == 0) + { value_label.set_label ("X"); + } else - value_label.set_label (value.to_string ()); + value_label.set_label (this.value.to_string ()); - if (warn_incorrect_solution ()) - { - int solution = game.board.get_solution (row, col); - if (this.value != 0) - { - error = value != solution; - } - else - { - var marks = game.board.get_earmarks (row, col); - for (int num = 1; num <= marks.length; num++) - { - if (marks[num - 1]) - { - if (num != solution) - earmark_labels[num - 1].add_css_class ("error"); - } - } - } - } + if (warn_incorrect_solution () && this.value != 0) + error = this.value != solution; if (show_warnings && game.board.broken_coords.contains (Coord (row, col))) + { error = true; + } if (error) add_css_class ("error"); else remove_css_class ("error"); + + if (this.value != 0) + return; + + for (int num = 1; num <= marks.length; num++) + { + if (marks[num - 1]) + { + if (!game.board.is_possible (row, col, num) || warn_incorrect_solution () && num != solution) + earmark_labels[num - 1].add_css_class ("error"); + else + earmark_labels[num - 1].remove_css_class ("error"); + } + } } // Return true if the user is to be warned when the value or earmarks are diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gnome-sudoku-45.2/src/sudoku-view.vala new/gnome-sudoku-45.3/src/sudoku-view.vala --- old/gnome-sudoku-45.2/src/sudoku-view.vala 2023-10-20 19:43:48.000000000 +0200 +++ new/gnome-sudoku-45.3/src/sudoku-view.vala 2023-12-01 15:36:33.000000000 +0100 @@ -162,42 +162,54 @@ ShortcutFunc up_func = (self) => { var view = (SudokuView) self; + if (view.selected_row == -1 || view.selected_col == -1) + return Gdk.EVENT_PROPAGATE; + if (view.selected_row == 0) view.cells[8, view.selected_col].grab_focus (); else view.cells[view.selected_row - 1, view.selected_col].grab_focus (); - return true; + return Gdk.EVENT_STOP; }; ShortcutFunc down_func = (self) => { var view = (SudokuView) self; + if (view.selected_row == -1 || view.selected_col == -1) + return Gdk.EVENT_PROPAGATE; + if (view.selected_row == 8) view.cells[0, view.selected_col].grab_focus (); else view.cells[view.selected_row + 1, view.selected_col].grab_focus (); - return true; + return Gdk.EVENT_STOP; }; ShortcutFunc left_func = (self) => { var view = (SudokuView) self; + if (view.selected_row == -1 || view.selected_col == -1) + return Gdk.EVENT_PROPAGATE; + if (view.selected_col == 0) view.cells[view.selected_row, 8].grab_focus (); else view.cells[view.selected_row, view.selected_col - 1].grab_focus (); - return true; + return Gdk.EVENT_STOP; }; ShortcutFunc right_func = (self) => { var view = (SudokuView) self; + if (view.selected_row == -1 || view.selected_col == -1) + return Gdk.EVENT_PROPAGATE; + if (view.selected_col == 8) view.cells[view.selected_row, 0].grab_focus (); else view.cells[view.selected_row, view.selected_col + 1].grab_focus (); - return true; + return Gdk.EVENT_STOP; }; add_binding (Gdk.Key.Up, 0, up_func, null);