mirror of https://github.com/GNOME/gimp.git
removed all component item signal handling code, which is cool...
2002-08-28 Michael Natterer <mitch@gimp.org> * app/widgets/gimpchannellistview.c: removed all component item signal handling code, which is cool... * app/widgets/gimpcomponentlistitem.c: ...and added it here, which is not so cool because it adds Extra Ugliness (TM). At least it fixes part one of #90967.
This commit is contained in:
parent
698bd613cc
commit
9d0bfc516b
|
@ -1,3 +1,12 @@
|
|||
2002-08-28 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/widgets/gimpchannellistview.c: removed all component item
|
||||
signal handling code, which is cool...
|
||||
|
||||
* app/widgets/gimpcomponentlistitem.c: ...and added it here, which
|
||||
is not so cool because it adds Extra Ugliness (TM). At least it
|
||||
fixes part one of #90967.
|
||||
|
||||
2002-08-28 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/undo.c (undo_pop_layer)
|
||||
|
|
|
@ -76,11 +76,6 @@ static void gimp_channel_list_view_mode_changed (GimpImage *gimage
|
|||
static void gimp_channel_list_view_alpha_changed (GimpImage *gimage,
|
||||
GimpChannelListView *view);
|
||||
|
||||
static void gimp_channel_list_view_component_toggle
|
||||
(GtkList *list,
|
||||
GtkWidget *child,
|
||||
GimpChannelListView *view);
|
||||
|
||||
|
||||
static GimpDrawableListViewClass *parent_class = NULL;
|
||||
|
||||
|
@ -150,7 +145,7 @@ gimp_channel_list_view_init (GimpChannelListView *view)
|
|||
view->component_list = gtk_list_new ();
|
||||
|
||||
/* FIXME: disable keyboard navigation because as of gtk+-2.0.3,
|
||||
* GtkList kb navogation with is h-o-r-r-i-b-l-y broken with
|
||||
* GtkList kb navigation with is h-o-r-r-i-b-l-y broken with
|
||||
* GTK_SELECTION_MULTIPLE --mitch 05/27/2002
|
||||
*/
|
||||
GTK_WIDGET_UNSET_FLAGS (view->component_list, GTK_CAN_FOCUS);
|
||||
|
@ -161,15 +156,7 @@ gimp_channel_list_view_init (GimpChannelListView *view)
|
|||
view->component_list);
|
||||
gtk_widget_show (view->component_list);
|
||||
|
||||
g_signal_connect (G_OBJECT (view->component_list), "select_child",
|
||||
G_CALLBACK (gimp_channel_list_view_component_toggle),
|
||||
view);
|
||||
g_signal_connect (G_OBJECT (view->component_list), "unselect_child",
|
||||
G_CALLBACK (gimp_channel_list_view_component_toggle),
|
||||
view);
|
||||
|
||||
/* To Selection button */
|
||||
|
||||
view->toselection_button =
|
||||
gimp_editor_add_button (GIMP_EDITOR (container_view),
|
||||
GIMP_STOCK_SELECTION_REPLACE,
|
||||
|
@ -385,31 +372,14 @@ gimp_channel_list_view_create_components (GimpChannelListView *view)
|
|||
list = g_list_append (list, list_item);
|
||||
}
|
||||
|
||||
g_signal_handlers_block_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
|
||||
gtk_list_insert_items (GTK_LIST (view->component_list), list, 0);
|
||||
|
||||
g_signal_handlers_unblock_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
|
||||
gtk_widget_queue_resize (GTK_WIDGET (view->component_frame));
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_channel_list_view_clear_components (GimpChannelListView *view)
|
||||
{
|
||||
g_signal_handlers_block_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
|
||||
gtk_list_clear_items (GTK_LIST (view->component_list), 0, -1);
|
||||
|
||||
g_signal_handlers_unblock_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -427,35 +397,3 @@ gimp_channel_list_view_alpha_changed (GimpImage *gimage,
|
|||
gimp_channel_list_view_clear_components (view);
|
||||
gimp_channel_list_view_create_components (view);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_channel_list_view_component_toggle (GtkList *list,
|
||||
GtkWidget *child,
|
||||
GimpChannelListView *view)
|
||||
{
|
||||
GimpComponentListItem *component_item;
|
||||
GimpImage *gimage;
|
||||
gboolean active;
|
||||
|
||||
component_item = GIMP_COMPONENT_LIST_ITEM (child);
|
||||
gimage = GIMP_ITEM_LIST_VIEW (view)->gimage;
|
||||
|
||||
#if 0
|
||||
g_print ("gimp_channel_list_view_component_toggle: channel: %d selected: %d\n",
|
||||
component_item->channel, child->state == GTK_STATE_SELECTED);
|
||||
#endif
|
||||
|
||||
active = gimp_image_get_component_active (gimage, component_item->channel);
|
||||
|
||||
g_signal_handlers_block_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
|
||||
gimp_image_set_component_active (gimage,
|
||||
component_item->channel,
|
||||
! active);
|
||||
|
||||
g_signal_handlers_unblock_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
}
|
||||
|
|
|
@ -76,11 +76,6 @@ static void gimp_channel_list_view_mode_changed (GimpImage *gimage
|
|||
static void gimp_channel_list_view_alpha_changed (GimpImage *gimage,
|
||||
GimpChannelListView *view);
|
||||
|
||||
static void gimp_channel_list_view_component_toggle
|
||||
(GtkList *list,
|
||||
GtkWidget *child,
|
||||
GimpChannelListView *view);
|
||||
|
||||
|
||||
static GimpDrawableListViewClass *parent_class = NULL;
|
||||
|
||||
|
@ -150,7 +145,7 @@ gimp_channel_list_view_init (GimpChannelListView *view)
|
|||
view->component_list = gtk_list_new ();
|
||||
|
||||
/* FIXME: disable keyboard navigation because as of gtk+-2.0.3,
|
||||
* GtkList kb navogation with is h-o-r-r-i-b-l-y broken with
|
||||
* GtkList kb navigation with is h-o-r-r-i-b-l-y broken with
|
||||
* GTK_SELECTION_MULTIPLE --mitch 05/27/2002
|
||||
*/
|
||||
GTK_WIDGET_UNSET_FLAGS (view->component_list, GTK_CAN_FOCUS);
|
||||
|
@ -161,15 +156,7 @@ gimp_channel_list_view_init (GimpChannelListView *view)
|
|||
view->component_list);
|
||||
gtk_widget_show (view->component_list);
|
||||
|
||||
g_signal_connect (G_OBJECT (view->component_list), "select_child",
|
||||
G_CALLBACK (gimp_channel_list_view_component_toggle),
|
||||
view);
|
||||
g_signal_connect (G_OBJECT (view->component_list), "unselect_child",
|
||||
G_CALLBACK (gimp_channel_list_view_component_toggle),
|
||||
view);
|
||||
|
||||
/* To Selection button */
|
||||
|
||||
view->toselection_button =
|
||||
gimp_editor_add_button (GIMP_EDITOR (container_view),
|
||||
GIMP_STOCK_SELECTION_REPLACE,
|
||||
|
@ -385,31 +372,14 @@ gimp_channel_list_view_create_components (GimpChannelListView *view)
|
|||
list = g_list_append (list, list_item);
|
||||
}
|
||||
|
||||
g_signal_handlers_block_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
|
||||
gtk_list_insert_items (GTK_LIST (view->component_list), list, 0);
|
||||
|
||||
g_signal_handlers_unblock_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
|
||||
gtk_widget_queue_resize (GTK_WIDGET (view->component_frame));
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_channel_list_view_clear_components (GimpChannelListView *view)
|
||||
{
|
||||
g_signal_handlers_block_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
|
||||
gtk_list_clear_items (GTK_LIST (view->component_list), 0, -1);
|
||||
|
||||
g_signal_handlers_unblock_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -427,35 +397,3 @@ gimp_channel_list_view_alpha_changed (GimpImage *gimage,
|
|||
gimp_channel_list_view_clear_components (view);
|
||||
gimp_channel_list_view_create_components (view);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_channel_list_view_component_toggle (GtkList *list,
|
||||
GtkWidget *child,
|
||||
GimpChannelListView *view)
|
||||
{
|
||||
GimpComponentListItem *component_item;
|
||||
GimpImage *gimage;
|
||||
gboolean active;
|
||||
|
||||
component_item = GIMP_COMPONENT_LIST_ITEM (child);
|
||||
gimage = GIMP_ITEM_LIST_VIEW (view)->gimage;
|
||||
|
||||
#if 0
|
||||
g_print ("gimp_channel_list_view_component_toggle: channel: %d selected: %d\n",
|
||||
component_item->channel, child->state == GTK_STATE_SELECTED);
|
||||
#endif
|
||||
|
||||
active = gimp_image_get_component_active (gimage, component_item->channel);
|
||||
|
||||
g_signal_handlers_block_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
|
||||
gimp_image_set_component_active (gimage,
|
||||
component_item->channel,
|
||||
! active);
|
||||
|
||||
g_signal_handlers_unblock_by_func (G_OBJECT (view->component_list),
|
||||
gimp_channel_list_view_component_toggle,
|
||||
view);
|
||||
}
|
||||
|
|
|
@ -46,10 +46,12 @@ static void gimp_component_list_item_set_viewable (GimpListItem *list_item
|
|||
|
||||
static void gimp_component_list_item_eye_toggled (GtkWidget *widget,
|
||||
gpointer data);
|
||||
#if 0
|
||||
static void gimp_component_list_item_toggled (GtkWidget *widget,
|
||||
gpointer data);
|
||||
#endif
|
||||
static gboolean gimp_component_list_item_button_press (GtkWidget *widget,
|
||||
GdkEventButton *bevent);
|
||||
static gboolean gimp_component_list_item_button_release (GtkWidget *widget,
|
||||
GdkEventButton *bevent);
|
||||
|
||||
static void gimp_component_list_item_visibility_changed
|
||||
(GimpImage *gimage,
|
||||
|
@ -99,13 +101,18 @@ gimp_component_list_item_get_type (void)
|
|||
static void
|
||||
gimp_component_list_item_class_init (GimpComponentListItemClass *klass)
|
||||
{
|
||||
GtkWidgetClass *widget_class;
|
||||
GimpListItemClass *list_item_class;
|
||||
|
||||
widget_class = GTK_WIDGET_CLASS (klass);
|
||||
list_item_class = GIMP_LIST_ITEM_CLASS (klass);
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
list_item_class->set_viewable = gimp_component_list_item_set_viewable;
|
||||
widget_class->button_press_event = gimp_component_list_item_button_press;
|
||||
widget_class->button_release_event = gimp_component_list_item_button_release;
|
||||
|
||||
list_item_class->set_viewable = gimp_component_list_item_set_viewable;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -144,6 +151,16 @@ gimp_component_list_item_init (GimpComponentListItem *list_item)
|
|||
GTK_ICON_SIZE_BUTTON);
|
||||
gtk_container_add (GTK_CONTAINER (list_item->eye_button), image);
|
||||
gtk_widget_show (image);
|
||||
|
||||
g_signal_connect_after (G_OBJECT (list_item), "select",
|
||||
G_CALLBACK (gimp_component_list_item_toggled),
|
||||
NULL);
|
||||
g_signal_connect_after (G_OBJECT (list_item), "deselect",
|
||||
G_CALLBACK (gimp_component_list_item_toggled),
|
||||
NULL);
|
||||
g_signal_connect_after (G_OBJECT (list_item), "toggle",
|
||||
G_CALLBACK (gimp_component_list_item_toggled),
|
||||
NULL);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
|
@ -235,18 +252,6 @@ gimp_component_list_item_set_viewable (GimpListItem *list_item,
|
|||
G_CALLBACK (gimp_component_list_item_active_changed),
|
||||
G_OBJECT (list_item),
|
||||
0);
|
||||
|
||||
#if 0
|
||||
g_signal_connect_after (G_OBJECT (list_item), "select",
|
||||
G_CALLBACK (gimp_component_list_item_toggled),
|
||||
NULL);
|
||||
g_signal_connect_after (G_OBJECT (list_item), "deselect",
|
||||
G_CALLBACK (gimp_component_list_item_toggled),
|
||||
NULL);
|
||||
g_signal_connect_after (G_OBJECT (list_item), "toggle",
|
||||
G_CALLBACK (gimp_component_list_item_toggled),
|
||||
NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -294,10 +299,31 @@ gimp_component_list_item_eye_toggled (GtkWidget *widget,
|
|||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void
|
||||
gimp_component_list_item_toggled (GtkWidget *widget,
|
||||
gpointer data)
|
||||
static gboolean
|
||||
gimp_component_list_item_button_press (GtkWidget *widget,
|
||||
GdkEventButton *bevent)
|
||||
{
|
||||
GimpComponentListItem *component_item;
|
||||
GimpListItem *list_item;
|
||||
GimpImage *gimage;
|
||||
|
||||
component_item = GIMP_COMPONENT_LIST_ITEM (widget);
|
||||
list_item = GIMP_LIST_ITEM (widget);
|
||||
gimage = GIMP_IMAGE (GIMP_PREVIEW (list_item->preview)->viewable);
|
||||
|
||||
if (bevent->button == 1 && bevent->type == GDK_BUTTON_PRESS)
|
||||
{
|
||||
gtk_grab_add (widget);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_component_list_item_button_release (GtkWidget *widget,
|
||||
GdkEventButton *bevent)
|
||||
{
|
||||
GimpComponentListItem *component_item;
|
||||
GimpListItem *list_item;
|
||||
|
@ -310,24 +336,59 @@ gimp_component_list_item_toggled (GtkWidget *widget,
|
|||
|
||||
active = (widget->state == GTK_STATE_SELECTED);
|
||||
|
||||
if (active != gimp_image_get_component_active (gimage,
|
||||
component_item->channel))
|
||||
if (bevent->button == 1 && GTK_WIDGET_HAS_GRAB (widget))
|
||||
{
|
||||
g_signal_handlers_block_by_func (G_OBJECT (gimage),
|
||||
gimp_component_list_item_active_changed,
|
||||
list_item);
|
||||
GtkWidget *event_widget;
|
||||
|
||||
gimp_image_set_component_active (gimage, component_item->channel,
|
||||
active);
|
||||
gtk_grab_remove (widget);
|
||||
|
||||
g_signal_handlers_unblock_by_func (G_OBJECT (gimage),
|
||||
gimp_component_list_item_active_changed,
|
||||
list_item);
|
||||
event_widget = gtk_get_event_widget ((GdkEvent *) bevent);
|
||||
|
||||
gimp_image_flush (gimage);
|
||||
/* eek */
|
||||
if (event_widget &&
|
||||
event_widget->parent &&
|
||||
(widget == event_widget ||
|
||||
widget == event_widget->parent ||
|
||||
widget == event_widget->parent->parent))
|
||||
{
|
||||
gimp_image_set_component_active (gimage,
|
||||
component_item->channel,
|
||||
! active);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_component_list_item_toggled (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
GimpComponentListItem *component_item;
|
||||
GimpListItem *list_item;
|
||||
GimpImage *gimage;
|
||||
gboolean active;
|
||||
gboolean component_active;
|
||||
|
||||
component_item = GIMP_COMPONENT_LIST_ITEM (widget);
|
||||
list_item = GIMP_LIST_ITEM (widget);
|
||||
gimage = GIMP_IMAGE (GIMP_PREVIEW (list_item->preview)->viewable);
|
||||
|
||||
active = (widget->state == GTK_STATE_SELECTED);
|
||||
|
||||
component_active = gimp_image_get_component_active (gimage,
|
||||
component_item->channel);
|
||||
|
||||
if (active != component_active)
|
||||
{
|
||||
if (component_active)
|
||||
gtk_item_select (GTK_ITEM (list_item));
|
||||
else
|
||||
gtk_item_deselect (GTK_ITEM (list_item));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
gimp_component_list_item_visibility_changed (GimpImage *gimage,
|
||||
|
@ -383,23 +444,25 @@ gimp_component_list_item_active_changed (GimpImage *gimage,
|
|||
{
|
||||
GimpComponentListItem *component_item;
|
||||
gboolean active;
|
||||
gboolean component_active;
|
||||
|
||||
component_item = GIMP_COMPONENT_LIST_ITEM (data);
|
||||
|
||||
if (channel != component_item->channel)
|
||||
return;
|
||||
|
||||
active = gimp_image_get_component_active (gimage, component_item->channel);
|
||||
active = (GTK_WIDGET (data)->state == GTK_STATE_SELECTED);
|
||||
|
||||
#if 0
|
||||
g_print ("gimp_component_list_item_active_changed: channel: %d active: %d\n",
|
||||
channel, active);
|
||||
#endif
|
||||
component_active = gimp_image_get_component_active (gimage,
|
||||
component_item->channel);
|
||||
|
||||
if (active)
|
||||
gtk_item_select (GTK_ITEM (data));
|
||||
else
|
||||
gtk_item_deselect (GTK_ITEM (data));
|
||||
if (active != component_active)
|
||||
{
|
||||
if (component_active)
|
||||
gtk_item_select (GTK_ITEM (data));
|
||||
else
|
||||
gtk_item_deselect (GTK_ITEM (data));
|
||||
}
|
||||
}
|
||||
|
||||
static gchar *
|
||||
|
|
Loading…
Reference in New Issue