GtkWindow: Elaborate the keybindings
Keep Ctrol-Shift-D as a straight toggle-the-inspector keybinding, but make Ctrl-Shift-I always bring up the inspector, and point it at the widget under the pointer.
This commit is contained in:
parent
b0390a3349
commit
a19bc50f64
@ -232,7 +232,7 @@ enum {
|
|||||||
ACTIVATE_FOCUS,
|
ACTIVATE_FOCUS,
|
||||||
ACTIVATE_DEFAULT,
|
ACTIVATE_DEFAULT,
|
||||||
KEYS_CHANGED,
|
KEYS_CHANGED,
|
||||||
TOGGLE_DEBUGGING,
|
ENABLE_DEBUGGING,
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -407,7 +407,8 @@ static void gtk_window_real_set_focus (GtkWindow *window,
|
|||||||
static void gtk_window_real_activate_default (GtkWindow *window);
|
static void gtk_window_real_activate_default (GtkWindow *window);
|
||||||
static void gtk_window_real_activate_focus (GtkWindow *window);
|
static void gtk_window_real_activate_focus (GtkWindow *window);
|
||||||
static void gtk_window_keys_changed (GtkWindow *window);
|
static void gtk_window_keys_changed (GtkWindow *window);
|
||||||
static void gtk_window_toggle_debugging (GtkWindow *window);
|
static void gtk_window_enable_debugging (GtkWindow *window,
|
||||||
|
gboolean toggle);
|
||||||
static gint gtk_window_draw (GtkWidget *widget,
|
static gint gtk_window_draw (GtkWidget *widget,
|
||||||
cairo_t *cr);
|
cairo_t *cr);
|
||||||
static void gtk_window_unset_transient_for (GtkWindow *window);
|
static void gtk_window_unset_transient_for (GtkWindow *window);
|
||||||
@ -678,7 +679,7 @@ gtk_window_class_init (GtkWindowClass *klass)
|
|||||||
klass->activate_default = gtk_window_real_activate_default;
|
klass->activate_default = gtk_window_real_activate_default;
|
||||||
klass->activate_focus = gtk_window_real_activate_focus;
|
klass->activate_focus = gtk_window_real_activate_focus;
|
||||||
klass->keys_changed = gtk_window_keys_changed;
|
klass->keys_changed = gtk_window_keys_changed;
|
||||||
klass->toggle_debugging = gtk_window_toggle_debugging;
|
klass->enable_debugging = gtk_window_enable_debugging;
|
||||||
|
|
||||||
/* Construct */
|
/* Construct */
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
@ -1186,25 +1187,28 @@ gtk_window_class_init (GtkWindowClass *klass)
|
|||||||
0);
|
0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GtkWindow::toggle-debugging:
|
* GtkWindow::enable-debugging:
|
||||||
* @window: the window on which the signal is emitted
|
* @window: the window on which the signal is emitted
|
||||||
|
* @toggle: toggle the debugger
|
||||||
*
|
*
|
||||||
* The ::toggle-debugging signal is a
|
* The ::enable-debugging signal is a [keybinding signal][GtkBindingSignal]
|
||||||
* [keybinding signal][GtkBindingSignal]
|
* which gets emitted when the user enables or disables interactive
|
||||||
* which gets emitted when the user enables or disables
|
* debugging. When @toggle is %TRUE, interactive debugging is toggled
|
||||||
* interactive debugging.
|
* on or off, when it is %FALSE, the debugger will be pointed at the
|
||||||
|
* widget under the pointer.
|
||||||
*
|
*
|
||||||
* The default binding for this signal is Ctrl-Shift-I.
|
* The default bindings for this signal are Ctrl-Shift-I
|
||||||
|
* and Ctrl-Shift-D.
|
||||||
*/
|
*/
|
||||||
window_signals[TOGGLE_DEBUGGING] =
|
window_signals[ENABLE_DEBUGGING] =
|
||||||
g_signal_new (I_("toggle-debugging"),
|
g_signal_new (I_("enable-debugging"),
|
||||||
G_TYPE_FROM_CLASS (gobject_class),
|
G_TYPE_FROM_CLASS (gobject_class),
|
||||||
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
|
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
|
||||||
G_STRUCT_OFFSET (GtkWindowClass, toggle_debugging),
|
G_STRUCT_OFFSET (GtkWindowClass, enable_debugging),
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
_gtk_marshal_VOID__VOID,
|
_gtk_marshal_VOID__BOOLEAN,
|
||||||
G_TYPE_NONE,
|
G_TYPE_NONE,
|
||||||
0);
|
1, G_TYPE_BOOLEAN);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Key bindings
|
* Key bindings
|
||||||
@ -1225,9 +1229,11 @@ gtk_window_class_init (GtkWindowClass *klass)
|
|||||||
"activate-default", 0);
|
"activate-default", 0);
|
||||||
|
|
||||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_I, GDK_CONTROL_MASK|GDK_SHIFT_MASK,
|
gtk_binding_entry_add_signal (binding_set, GDK_KEY_I, GDK_CONTROL_MASK|GDK_SHIFT_MASK,
|
||||||
"toggle-debugging", 0);
|
"enable-debugging", 1,
|
||||||
|
G_TYPE_BOOLEAN, FALSE);
|
||||||
gtk_binding_entry_add_signal (binding_set, GDK_KEY_D, GDK_CONTROL_MASK|GDK_SHIFT_MASK,
|
gtk_binding_entry_add_signal (binding_set, GDK_KEY_D, GDK_CONTROL_MASK|GDK_SHIFT_MASK,
|
||||||
"toggle-debugging", 0);
|
"enable-debugging", 1,
|
||||||
|
G_TYPE_BOOLEAN, TRUE);
|
||||||
|
|
||||||
add_arrow_bindings (binding_set, GDK_KEY_Up, GTK_DIR_UP);
|
add_arrow_bindings (binding_set, GDK_KEY_Up, GTK_DIR_UP);
|
||||||
add_arrow_bindings (binding_set, GDK_KEY_Down, GTK_DIR_DOWN);
|
add_arrow_bindings (binding_set, GDK_KEY_Down, GTK_DIR_DOWN);
|
||||||
@ -11482,6 +11488,7 @@ show_dialog (gpointer data)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_window_set_debugging (gboolean enable,
|
gtk_window_set_debugging (gboolean enable,
|
||||||
|
gboolean select,
|
||||||
gboolean warn)
|
gboolean warn)
|
||||||
{
|
{
|
||||||
GtkWidget *dialog = NULL;
|
GtkWidget *dialog = NULL;
|
||||||
@ -11518,6 +11525,9 @@ gtk_window_set_debugging (gboolean enable,
|
|||||||
gtk_window_present (GTK_WINDOW (inspector_window));
|
gtk_window_present (GTK_WINDOW (inspector_window));
|
||||||
if (dialog)
|
if (dialog)
|
||||||
g_timeout_add (200, show_dialog, dialog);
|
g_timeout_add (200, show_dialog, dialog);
|
||||||
|
|
||||||
|
if (select)
|
||||||
|
gtk_inspector_window_select_widget_under_pointer (GTK_INSPECTOR_WINDOW (inspector_window));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -11540,7 +11550,7 @@ gtk_window_set_debugging (gboolean enable,
|
|||||||
void
|
void
|
||||||
gtk_window_set_interactive_debugging (gboolean enable)
|
gtk_window_set_interactive_debugging (gboolean enable)
|
||||||
{
|
{
|
||||||
gtk_window_set_debugging (enable, FALSE);
|
gtk_window_set_debugging (enable, FALSE, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -11569,16 +11579,22 @@ inspector_keybinding_enabled (gboolean *warn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_window_toggle_debugging (GtkWindow *window)
|
gtk_window_enable_debugging (GtkWindow *window,
|
||||||
|
gboolean toggle)
|
||||||
{
|
{
|
||||||
gboolean warn;
|
gboolean warn;
|
||||||
|
|
||||||
if (!inspector_keybinding_enabled (&warn))
|
if (!inspector_keybinding_enabled (&warn))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (toggle)
|
||||||
|
{
|
||||||
if (GTK_IS_WIDGET (inspector_window) &&
|
if (GTK_IS_WIDGET (inspector_window) &&
|
||||||
gtk_widget_is_visible (inspector_window))
|
gtk_widget_is_visible (inspector_window))
|
||||||
gtk_window_set_debugging (FALSE, FALSE);
|
gtk_window_set_debugging (FALSE, FALSE, FALSE);
|
||||||
else
|
else
|
||||||
gtk_window_set_debugging (TRUE, warn);
|
gtk_window_set_debugging (TRUE, FALSE, warn);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
gtk_window_set_debugging (TRUE, TRUE, warn);
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,8 @@ struct _GtkWindowClass
|
|||||||
void (* activate_focus) (GtkWindow *window);
|
void (* activate_focus) (GtkWindow *window);
|
||||||
void (* activate_default) (GtkWindow *window);
|
void (* activate_default) (GtkWindow *window);
|
||||||
void (* keys_changed) (GtkWindow *window);
|
void (* keys_changed) (GtkWindow *window);
|
||||||
void (* toggle_debugging) (GtkWindow *window);
|
void (* enable_debugging) (GtkWindow *window,
|
||||||
|
gboolean toggle);
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user