static gboolean gstyle_slidein_event_box_key_pressed_cb (GstyleSlidein *self, GdkEventKey *event, GtkWidget *widget) { GtkWidget *focus; g_assert (GSTYLE_IS_SLIDEIN (self)); g_assert (event != NULL); g_assert (GTK_IS_WIDGET (widget)); focus = gtk_window_get_focus (GTK_WINDOW (gtk_widget_get_toplevel (widget))); if (focus == NULL) return GDK_EVENT_PROPAGATE; if (event->keyval == GDK_KEY_Escape && !GTK_IS_ENTRY (focus)) { gstyle_slidein_reveal_slide (self, FALSE); return GDK_EVENT_STOP; } if (gtk_widget_is_ancestor (focus, widget)) return gtk_widget_event (focus, (GdkEvent*) event); return GDK_EVENT_PROPAGATE; }
static gboolean event_window_button_press_event_cb (GstyleSlidein *self, GdkEvent *event, GstyleSlidein *unused) { GdkEventButton *button_event = (GdkEventButton *)event; GtkAllocation child_alloc; gboolean is_in_slide; GtkWidget *src_widget; gint dest_x, dest_y; g_assert (GSTYLE_IS_SLIDEIN (self)); src_widget = gtk_get_event_widget (event); gtk_widget_translate_coordinates (src_widget, GTK_WIDGET (self->overlay_child), button_event->x, button_event->y, &dest_x, &dest_y); gtk_widget_get_allocated_size (self->overlay_child, &child_alloc, NULL); is_in_slide = (0 <= dest_x && dest_x <= child_alloc.width && 0 <= dest_y && dest_y <= child_alloc.height); if (!is_in_slide) { gtk_grab_remove (GTK_WIDGET (self)); gstyle_slidein_reveal_slide (self, FALSE); return GDK_EVENT_PROPAGATE; } else return GDK_EVENT_STOP; }
static void gstyle_color_panel_actions_toggle_page (GSimpleAction *action, GVariant *variant, gpointer user_data) { GstyleColorPanel *self = (GstyleColorPanel *)user_data; g_autoptr (GVariant) value = NULL; g_autofree gchar *page_name = NULL; const gchar *name; gboolean state; g_assert (GSTYLE_IS_COLOR_PANEL (self)); value = g_action_get_state (G_ACTION (action)); state = g_variant_get_boolean (value); name = g_action_get_name(G_ACTION (action)); if (!g_str_has_prefix (name, "toggle-")) return; page_name = g_strdup (&name [7]); g_simple_action_set_state (action, g_variant_new_boolean (!state)); if (!state) { _gstyle_color_panel_update_prefs_page (self, page_name); gtk_stack_set_visible_child_name (self->prefs_stack, page_name); } gstyle_slidein_reveal_slide (GSTYLE_SLIDEIN (self->prefs_slidein), !gstyle_slidein_get_revealed (GSTYLE_SLIDEIN (self->prefs_slidein))); }