Revert "gtkcellrendereraccel: Use a GtkInvisible to grab on"
This reverts commit fe5402d32e
.
This commit is contained in:
parent
4cec291ab0
commit
fe11f8f875
@ -27,9 +27,9 @@
|
|||||||
#include "gtkmain.h"
|
#include "gtkmain.h"
|
||||||
#include "gtksizerequest.h"
|
#include "gtksizerequest.h"
|
||||||
#include "gtktypebuiltins.h"
|
#include "gtktypebuiltins.h"
|
||||||
#include "gtkinvisible.h"
|
|
||||||
#include "gtkprivate.h"
|
#include "gtkprivate.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SECTION:gtkcellrendereraccel
|
* SECTION:gtkcellrendereraccel
|
||||||
* @Short_description: Renders a keyboard accelerator in a cell
|
* @Short_description: Renders a keyboard accelerator in a cell
|
||||||
@ -88,9 +88,9 @@ enum {
|
|||||||
struct _GtkCellRendererAccelPrivate
|
struct _GtkCellRendererAccelPrivate
|
||||||
{
|
{
|
||||||
GtkWidget *edit_widget;
|
GtkWidget *edit_widget;
|
||||||
|
GtkWidget *grab_widget;
|
||||||
GtkWidget *sizing_label;
|
GtkWidget *sizing_label;
|
||||||
|
|
||||||
GtkWidget *grab_invisible;
|
|
||||||
GdkDevice *grab_keyboard;
|
GdkDevice *grab_keyboard;
|
||||||
GdkDevice *grab_pointer;
|
GdkDevice *grab_pointer;
|
||||||
|
|
||||||
@ -526,6 +526,7 @@ grab_key_callback (GtkWidget *widget,
|
|||||||
gtk_cell_editable_editing_done (GTK_CELL_EDITABLE (priv->edit_widget));
|
gtk_cell_editable_editing_done (GTK_CELL_EDITABLE (priv->edit_widget));
|
||||||
gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE (priv->edit_widget));
|
gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE (priv->edit_widget));
|
||||||
priv->edit_widget = NULL;
|
priv->edit_widget = NULL;
|
||||||
|
priv->grab_widget = NULL;
|
||||||
priv->grab_keyboard = NULL;
|
priv->grab_keyboard = NULL;
|
||||||
priv->grab_pointer = NULL;
|
priv->grab_pointer = NULL;
|
||||||
|
|
||||||
@ -552,8 +553,9 @@ ungrab_stuff (GtkWidget *widget,
|
|||||||
priv->grab_keyboard = NULL;
|
priv->grab_keyboard = NULL;
|
||||||
priv->grab_pointer = NULL;
|
priv->grab_pointer = NULL;
|
||||||
|
|
||||||
gtk_widget_destroy (priv->grab_invisible);
|
g_signal_handlers_disconnect_by_func (priv->grab_widget,
|
||||||
priv->grab_invisible = NULL;
|
G_CALLBACK (grab_key_callback),
|
||||||
|
accel);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -662,6 +664,7 @@ gtk_cell_renderer_accel_start_editing (GtkCellRenderer *cell,
|
|||||||
GtkWidget *label;
|
GtkWidget *label;
|
||||||
GtkWidget *eventbox;
|
GtkWidget *eventbox;
|
||||||
GdkDevice *device, *keyb, *pointer;
|
GdkDevice *device, *keyb, *pointer;
|
||||||
|
GdkWindow *window;
|
||||||
gboolean editable;
|
gboolean editable;
|
||||||
guint32 time;
|
guint32 time;
|
||||||
|
|
||||||
@ -674,8 +677,11 @@ gtk_cell_renderer_accel_start_editing (GtkCellRenderer *cell,
|
|||||||
if (editable == FALSE)
|
if (editable == FALSE)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
window = gtk_widget_get_window (widget);
|
||||||
context = gtk_widget_get_style_context (widget);
|
context = gtk_widget_get_style_context (widget);
|
||||||
|
|
||||||
|
g_return_val_if_fail (window != NULL, NULL);
|
||||||
|
|
||||||
if (event)
|
if (event)
|
||||||
device = gdk_event_get_device (event);
|
device = gdk_event_get_device (event);
|
||||||
else
|
else
|
||||||
@ -697,16 +703,13 @@ gtk_cell_renderer_accel_start_editing (GtkCellRenderer *cell,
|
|||||||
|
|
||||||
time = gdk_event_get_time (event);
|
time = gdk_event_get_time (event);
|
||||||
|
|
||||||
priv->grab_invisible = gtk_invisible_new ();
|
if (gdk_device_grab (keyb, window,
|
||||||
gtk_widget_show (priv->grab_invisible);
|
|
||||||
|
|
||||||
if (gdk_device_grab (keyb, gtk_widget_get_window (priv->grab_invisible),
|
|
||||||
GDK_OWNERSHIP_WINDOW, FALSE,
|
GDK_OWNERSHIP_WINDOW, FALSE,
|
||||||
GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK,
|
GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK,
|
||||||
NULL, time) != GDK_GRAB_SUCCESS)
|
NULL, time) != GDK_GRAB_SUCCESS)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (gdk_device_grab (pointer, gtk_widget_get_window (priv->grab_invisible),
|
if (gdk_device_grab (pointer, window,
|
||||||
GDK_OWNERSHIP_WINDOW, FALSE,
|
GDK_OWNERSHIP_WINDOW, FALSE,
|
||||||
GDK_BUTTON_PRESS_MASK,
|
GDK_BUTTON_PRESS_MASK,
|
||||||
NULL, time) != GDK_GRAB_SUCCESS)
|
NULL, time) != GDK_GRAB_SUCCESS)
|
||||||
@ -717,8 +720,9 @@ gtk_cell_renderer_accel_start_editing (GtkCellRenderer *cell,
|
|||||||
|
|
||||||
priv->grab_keyboard = keyb;
|
priv->grab_keyboard = keyb;
|
||||||
priv->grab_pointer = pointer;
|
priv->grab_pointer = pointer;
|
||||||
|
priv->grab_widget = widget;
|
||||||
|
|
||||||
g_signal_connect (G_OBJECT (priv->grab_invisible), "key-press-event",
|
g_signal_connect (G_OBJECT (widget), "key-press-event",
|
||||||
G_CALLBACK (grab_key_callback),
|
G_CALLBACK (grab_key_callback),
|
||||||
accel);
|
accel);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user