[atomix/gnome-3-32] Fixed keys in menu controlling game (#17)
- From: Robert Roth <robertroth src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [atomix/gnome-3-32] Fixed keys in menu controlling game (#17)
- Date: Mon, 11 Mar 2019 18:54:00 +0000 (UTC)
commit 72b11613481e41778ed8afe63735d7f26af40bb2
Author: Robert Roth <robert roth bee-tf ro>
Date: Mon Mar 11 20:50:34 2019 +0200
Fixed keys in menu controlling game (#17)
data/ui/interface.ui | 6 ++++--
src/board-gtk.c | 16 ++++++++++++++++
src/main.c | 16 +---------------
3 files changed, 21 insertions(+), 17 deletions(-)
---
diff --git a/data/ui/interface.ui b/data/ui/interface.ui
index 124b676..1fe99a4 100644
--- a/data/ui/interface.ui
+++ b/data/ui/interface.ui
@@ -21,7 +21,6 @@
<object class="GtkMenuButton" id="primary-menu-button">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="receives_default">True</property>
<child>
<object class="GtkImage" id="primary-menu-image">
<property name="visible">True</property>
@@ -53,8 +52,11 @@
<property name="shadow_type">none</property>
<child>
<object class="GtkFixed" id="game_fixed">
+ <property name="receives_default">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can_focus">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
</object>
diff --git a/src/board-gtk.c b/src/board-gtk.c
index c8c561f..86fb651 100644
--- a/src/board-gtk.c
+++ b/src/board-gtk.c
@@ -81,6 +81,8 @@ static SelectorData *selector_data; /* data about the selector */
/* Forward declarations of internal functions */
+static gboolean on_key_press_event (GObject *widget, GdkEventKey *event,
+ gpointer user_data);
void board_gtk_render (void);
static void render_tile (Tile *tile, gint row, gint col);
GtkWidget* create_tile (double x, double y, Tile *tile);
@@ -250,6 +252,7 @@ static gboolean board_handle_arrow_event (GtkWidget *item,
GdkEventButton *event,
gpointer direction)
{
+ gtk_widget_grab_focus (GTK_WIDGET (board_canvas));
/* is currently an object moved? */
if (anim_data->timeout_id != -1)
return FALSE;
@@ -433,6 +436,10 @@ void board_gtk_init (Theme * theme, gpointer canvas)
create_logo ();
gtk_widget_show_all (GTK_WIDGET(board_canvas));
+ /* add playfield canvas to left side */
+ g_signal_connect (GTK_WIDGET(board_canvas), "key-press-event",
+ G_CALLBACK (on_key_press_event), app);
+
selector_data = selector_create ();
}
@@ -516,6 +523,7 @@ static gboolean board_handle_item_event (GtkWidget *item,
gboolean just_unselect;
guint new_row, new_col;
+ gtk_widget_grab_focus (GTK_WIDGET (board_canvas));
/* is currently an object moved? */
if (anim_data->timeout_id != -1)
return FALSE;
@@ -851,6 +859,14 @@ gboolean board_gtk_handle_key_event (GObject * canvas, GdkEventKey * event,
return FALSE;
}
+static gboolean on_key_press_event (GObject *widget, GdkEventKey *event,
+ gpointer user_data)
+{
+ if ((app->state == GAME_STATE_RUNNING) || (app->state == GAME_STATE_RUNNING_UNMOVED))
+ return board_gtk_handle_key_event (NULL, event, NULL);
+
+ return FALSE;
+}
static void selector_move_to (SelectorData *data, guint row, guint col)
{
diff --git a/src/main.c b/src/main.c
index 72a9d8b..e9ac822 100644
--- a/src/main.c
+++ b/src/main.c
@@ -49,8 +49,6 @@ static gboolean set_next_level (void);
static void setup_level (void);
static void level_cleanup_view (void);
static void atomix_exit (void);
-static gboolean on_key_press_event (GObject *widget, GdkEventKey *event,
- gpointer user_data);
static void game_init (void);
static void update_statistics (void);
static void view_congratulations (void);
@@ -232,6 +230,7 @@ static void controller_handle_action (GameAction action)
update_menu_item_state ();
update_statistics ();
+ gtk_widget_grab_focus (GTK_WIDGET (app->fi_matrix));
}
static void
@@ -374,15 +373,6 @@ static void atomix_exit (void)
}
-static gboolean on_key_press_event (GObject *widget, GdkEventKey *event,
- gpointer user_data)
-{
- if ((app->state == GAME_STATE_RUNNING) || (app->state == GAME_STATE_RUNNING_UNMOVED))
- return board_gtk_handle_key_event (NULL, event, NULL);
-
- return FALSE;
-}
-
static void game_init (void)
{
g_return_if_fail (app != NULL);
@@ -633,10 +623,6 @@ static AtomixApp *create_gui (GApplication *app_instance)
gtk_grid_attach_next_to (GTK_GRID (stats_grid), app->clock,
time_label, GTK_POS_RIGHT, 1, 1);
- /* add playfield canvas to left side */
- g_signal_connect (G_OBJECT (app->mainwin), "key-press-event",
- G_CALLBACK (on_key_press_event), app);
-
app->lb_level = GTK_WIDGET (gtk_builder_get_object (builder, "level_value"));
app->lb_name = GTK_WIDGET (gtk_builder_get_object (builder, "molecule_value"));
app->lb_formula = GTK_WIDGET (gtk_builder_get_object (builder, "formula_value"));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]