[Goodies-commits] r3961 - ristretto/trunk/src
Stephan Arts
stephan at xfce.org
Sun Feb 17 00:13:50 CET 2008
Author: stephan
Date: 2008-02-16 23:13:50 +0000 (Sat, 16 Feb 2008)
New Revision: 3961
Modified:
ristretto/trunk/src/navigator.c
ristretto/trunk/src/navigator.h
ristretto/trunk/src/thumbnail.c
ristretto/trunk/src/thumbnail.h
ristretto/trunk/src/thumbnail_bar.c
Log:
Improve behaviour of the thumbnails, lets them manage widget-states themselves instead of relying on the parent-class to do it for them.
Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c 2008-02-16 15:32:19 UTC (rev 3960)
+++ ristretto/trunk/src/navigator.c 2008-02-16 23:13:50 UTC (rev 3961)
@@ -1350,3 +1350,15 @@
}
return 1;
}
+
+gboolean
+rstto_navigator_entry_is_selected(RsttoNavigatorEntry *entry)
+{
+ g_return_val_if_fail(RSTTO_IS_NAVIGATOR(entry->navigator), FALSE);
+ g_return_val_if_fail((entry->navigator->file_iter != NULL), FALSE);
+
+ if (entry == entry->navigator->file_iter->data)
+ return TRUE;
+ else
+ return FALSE;
+}
Modified: ristretto/trunk/src/navigator.h
===================================================================
--- ristretto/trunk/src/navigator.h 2008-02-16 15:32:19 UTC (rev 3960)
+++ ristretto/trunk/src/navigator.h 2008-02-16 23:13:50 UTC (rev 3961)
@@ -157,6 +157,9 @@
void
rstto_navigator_set_monitor_handle_for_dir(RsttoNavigator *nav, ThunarVfsPath *dir_path);
+gboolean
+rstto_navigator_entry_is_selected(RsttoNavigatorEntry *entry);
+
G_END_DECLS
#endif /* __RISTRETTO_NAVIGATOR_H__ */
Modified: ristretto/trunk/src/thumbnail.c
===================================================================
--- ristretto/trunk/src/thumbnail.c 2008-02-16 15:32:19 UTC (rev 3960)
+++ ristretto/trunk/src/thumbnail.c 2008-02-16 23:13:50 UTC (rev 3961)
@@ -75,7 +75,7 @@
NULL
};
- rstto_thumbnail_type = g_type_register_static (GTK_TYPE_TOGGLE_BUTTON, "RsttoThumbnail", &rstto_thumbnail_info, 0);
+ rstto_thumbnail_type = g_type_register_static (GTK_TYPE_BUTTON, "RsttoThumbnail", &rstto_thumbnail_info, 0);
}
return rstto_thumbnail_type;
}
@@ -177,6 +177,19 @@
if(thumb->priv->entry)
{
+
+ if (GTK_WIDGET_STATE(widget) != GTK_STATE_PRELIGHT)
+ {
+ if (rstto_navigator_entry_is_selected(thumb->priv->entry))
+ {
+ gtk_widget_set_state(widget, GTK_STATE_SELECTED);
+ }
+ else
+ {
+ gtk_widget_set_state(widget, GTK_STATE_NORMAL);
+ }
+ }
+
GdkPixbuf *pixbuf = rstto_navigator_entry_get_thumb(
thumb->priv->entry,
widget->allocation.height - 4);
@@ -255,52 +268,10 @@
static void
rstto_thumbnail_clicked(GtkButton *button)
{
- GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON(button);
RsttoThumbnail *thumb = RSTTO_THUMBNAIL(button);
- GtkToggleButton *tmp_button;
+ RsttoNavigatorEntry *entry = rstto_thumbnail_get_entry(thumb);
- gboolean toggled = FALSE;
+ rstto_navigator_entry_select(entry);
- GSList *tmp_list;
-
- if(toggle_button->active == TRUE)
- {
- tmp_button = NULL;
- tmp_list = thumb->priv->group;
- while(tmp_list)
- {
- tmp_button = tmp_list->data;
- tmp_list = tmp_list->next;
- if (tmp_button->active && tmp_button != toggle_button)
- break;
-
- tmp_button = NULL;
- }
-
- if (tmp_button != NULL)
- {
- toggled = TRUE;
- }
- }
- else
- {
- toggled = TRUE;
-
- tmp_list = thumb->priv->group;
- while(tmp_list)
- {
- tmp_button = tmp_list->data;
- tmp_list = tmp_list->next;
- if (tmp_button->active && (tmp_button != toggle_button))
- {
- gtk_button_clicked(GTK_BUTTON(tmp_button));
- break;
- }
- }
- }
-
- if (toggled == TRUE)
- {
- GTK_BUTTON_CLASS(parent_class)->clicked(button);
- }
+ gtk_widget_queue_draw (GTK_WIDGET (button));
}
Modified: ristretto/trunk/src/thumbnail.h
===================================================================
--- ristretto/trunk/src/thumbnail.h 2008-02-16 15:32:19 UTC (rev 3960)
+++ ristretto/trunk/src/thumbnail.h 2008-02-16 23:13:50 UTC (rev 3961)
@@ -45,15 +45,16 @@
struct _RsttoThumbnail
{
- GtkToggleButton parent;
+ GtkButton parent;
RsttoThumbnailPriv *priv;
+ gboolean selected;
};
typedef struct _RsttoThumbnailClass RsttoThumbnailClass;
struct _RsttoThumbnailClass
{
- GtkToggleButtonClass parent_class;
+ GtkButtonClass parent_class;
};
GType rstto_thumbnail_get_type();
Modified: ristretto/trunk/src/thumbnail_bar.c
===================================================================
--- ristretto/trunk/src/thumbnail_bar.c 2008-02-16 15:32:19 UTC (rev 3960)
+++ ristretto/trunk/src/thumbnail_bar.c 2008-02-16 23:13:50 UTC (rev 3961)
@@ -105,7 +105,7 @@
RsttoThumbnailBar *bar);
static void
-cb_rstto_thumbnail_bar_thumbnail_toggled (RsttoThumbnail *thumb, RsttoThumbnailBar *bar);
+cb_rstto_thumbnail_bar_thumbnail_clicked (RsttoThumbnail *thumb, RsttoThumbnailBar *bar);
static gint
cb_rstto_thumbnail_bar_compare (RsttoThumbnail *a, RsttoThumbnail *b);
@@ -612,7 +612,7 @@
{
thumb = rstto_thumbnail_new(entry, NULL);
}
- g_signal_connect(G_OBJECT(thumb), "toggled", G_CALLBACK(cb_rstto_thumbnail_bar_thumbnail_toggled), bar);
+ g_signal_connect(G_OBJECT(thumb), "clicked", G_CALLBACK(cb_rstto_thumbnail_bar_thumbnail_clicked), bar);
g_signal_connect(G_OBJECT(thumb), "button_press_event", G_CALLBACK(cb_rstto_thumbnail_bar_thumbnail_button_press_event), NULL);
g_signal_connect(G_OBJECT(thumb), "button_release_event", G_CALLBACK(cb_rstto_thumbnail_bar_thumbnail_button_release_event), NULL);
g_signal_connect(G_OBJECT(thumb), "motion_notify_event", G_CALLBACK(cb_rstto_thumbnail_bar_thumbnail_motion_notify_event), NULL);
@@ -643,17 +643,15 @@
while (iter != NULL)
{
- if (entry != rstto_thumbnail_get_entry(RSTTO_THUMBNAIL(iter->data)))
+ if (entry == rstto_thumbnail_get_entry(RSTTO_THUMBNAIL(iter->data)))
{
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(iter->data), FALSE);
+ //gtk_button_clicked(GTK_BUTTON(iter->data));
+ break;
}
- else
- {
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(iter->data), TRUE);
- }
i++;
iter = g_slist_next(iter);
}
+
/* If the children should be autocentered... resize */
if (bar->priv->auto_center == TRUE)
gtk_widget_queue_resize(GTK_WIDGET(bar));
@@ -672,9 +670,9 @@
}
static void
-cb_rstto_thumbnail_bar_thumbnail_toggled (RsttoThumbnail *thumb, RsttoThumbnailBar *bar)
+cb_rstto_thumbnail_bar_thumbnail_clicked (RsttoThumbnail *thumb, RsttoThumbnailBar *bar)
{
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(thumb)) == TRUE)
+ if (thumb->selected == TRUE)
{
bar->priv->auto_center = TRUE;
rstto_navigator_entry_select (rstto_thumbnail_get_entry(thumb));
@@ -797,8 +795,7 @@
{
if (entry == rstto_thumbnail_get_entry(RSTTO_THUMBNAIL(iter->data)))
{
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(iter->data), FALSE);
- g_signal_handlers_disconnect_by_func(G_OBJECT(iter->data), G_CALLBACK(cb_rstto_thumbnail_bar_thumbnail_toggled), bar);
+ g_signal_handlers_disconnect_by_func(G_OBJECT(iter->data), G_CALLBACK(cb_rstto_thumbnail_bar_thumbnail_clicked), bar);
gtk_widget_destroy(GTK_WIDGET(iter->data));
break;
}
More information about the Goodies-commits
mailing list