diff --git a/ChangeLog b/ChangeLog index f84fcbf..8d513ea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2008-05-01 Diego Ongaro + * panel-plugin/datetime.{c,h}: GtkToggleButton in panel (#3456) + 2007-04-07 Remco den Breeje * panel-plugin/datetime.{c,h}, * panel-plugin/datetime-dialog.c: Enable tooltips. Based diff --git a/panel-plugin/datetime.c b/panel-plugin/datetime.c index 76a85ae..4a83cf7 100644 --- a/panel-plugin/datetime.c +++ b/panel-plugin/datetime.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "datetime.h" #include "datetime-dialog.h" @@ -123,15 +124,15 @@ gboolean datetime_update(gpointer data) switch(datetime->layout) { case LAYOUT_DATE_TIMETT: - gtk_tooltips_set_tip(GTK_TOOLTIPS(datetime->tips), datetime->eventbox, + gtk_tooltips_set_tip(GTK_TOOLTIPS(datetime->tips), datetime->button, gtk_label_get_text(GTK_LABEL(datetime->time_label)), NULL); break; case LAYOUT_TIME_DATETT: - gtk_tooltips_set_tip(GTK_TOOLTIPS(datetime->tips), datetime->eventbox, + gtk_tooltips_set_tip(GTK_TOOLTIPS(datetime->tips), datetime->button, gtk_label_get_text(GTK_LABEL(datetime->date_label)), NULL); break; default: - gtk_tooltips_set_tip(GTK_TOOLTIPS(datetime->tips), datetime->eventbox, + gtk_tooltips_set_tip(GTK_TOOLTIPS(datetime->tips), datetime->button, NULL, NULL); break; } @@ -319,17 +320,13 @@ static GtkWidget * pop_calendar_window(GtkWidget *parent, /* * when the dialog is clicked, show the calendar */ -static gboolean datetime_clicked(GtkWidget *widget, - GdkEventButton *event, +static void datetime_clicked(GtkWidget *widget, t_datetime *datetime) { gint orientation; - if (event->button != 1) - return FALSE; - if (datetime == NULL) - return FALSE; + return; if (datetime->cal != NULL) { @@ -342,11 +339,10 @@ static gboolean datetime_clicked(GtkWidget *widget, orientation = xfce_panel_plugin_get_orientation(datetime->plugin); /* draw calendar */ - datetime->cal = pop_calendar_window(datetime->eventbox, + datetime->cal = pop_calendar_window(datetime->button, orientation, gtk_label_get_text(GTK_LABEL(datetime->date_label))); } - return TRUE; } static void datetime_update_date_font(t_datetime *datetime) @@ -459,18 +455,12 @@ void datetime_apply_format(t_datetime *datetime, } /* - * Set a border - Function only called by the signal handler. - * A border is only set, if there is enough space for it (size > 26) + * Function only called by the signal handler. */ static int datetime_set_size(XfcePanelPlugin *plugin, gint size, t_datetime *datetime) { - if(size > 26) - gtk_container_set_border_width(GTK_CONTAINER(datetime->frame), 2); - else - gtk_container_set_border_width(GTK_CONTAINER(datetime->frame), 0); - /* return true to please the signal handler ;) */ return TRUE; } @@ -549,17 +539,12 @@ void datetime_write_rc_file(XfcePanelPlugin *plugin, t_datetime *dt) */ static void datetime_create_widget(t_datetime * datetime) { - /* create event box */ - datetime->eventbox = gtk_event_box_new(); - - /* create frame */ - datetime->frame = gtk_frame_new(NULL); - gtk_frame_set_shadow_type(GTK_FRAME(datetime->frame), GTK_SHADOW_NONE); - gtk_container_add(GTK_CONTAINER(datetime->eventbox), datetime->frame); + /* create button */ + datetime->button = xfce_create_panel_toggle_button(); /* create vertical box */ datetime->vbox = gtk_vbox_new(TRUE, 0); - gtk_container_add(GTK_CONTAINER(datetime->frame), datetime->vbox); + gtk_container_add(GTK_CONTAINER(datetime->button), datetime->vbox); /* create time and date lines */ datetime->time_label = gtk_label_new(""); @@ -579,7 +564,7 @@ static void datetime_create_widget(t_datetime * datetime) datetime->tips = gtk_tooltips_new (); /* connect widget signals to functions */ - g_signal_connect(datetime->eventbox, "button-press-event", + g_signal_connect(datetime->button, "toggled", G_CALLBACK(datetime_clicked), datetime); } @@ -612,7 +597,7 @@ static t_datetime * datetime_new(XfcePanelPlugin *plugin) datetime_read_rc_file(plugin, datetime); /* display plugin */ - gtk_widget_show_all(datetime->eventbox); + gtk_widget_show_all(datetime->button); /* set date and time labels */ datetime_update(datetime); @@ -629,7 +614,7 @@ static void datetime_free(XfcePanelPlugin *plugin, t_datetime *datetime) g_source_remove(datetime->timeout_id); /* destroy widget */ - gtk_widget_destroy(datetime->eventbox); + gtk_widget_destroy(datetime->button); /* cleanup */ g_free(datetime->date_font); @@ -649,8 +634,8 @@ static void datetime_construct(XfcePanelPlugin *plugin) t_datetime * datetime = datetime_new(plugin); /* add plugin to panel */ - gtk_container_add(GTK_CONTAINER(plugin), datetime->eventbox); - xfce_panel_plugin_add_action_widget(plugin, datetime->eventbox); + gtk_container_add(GTK_CONTAINER(plugin), datetime->button); + xfce_panel_plugin_add_action_widget(plugin, datetime->button); /* connect plugin signals to functions */ g_signal_connect(plugin, "save", diff --git a/panel-plugin/datetime.h b/panel-plugin/datetime.h index 9ff3d2f..07224c4 100644 --- a/panel-plugin/datetime.h +++ b/panel-plugin/datetime.h @@ -41,8 +41,7 @@ typedef enum typedef struct { XfcePanelPlugin * plugin; - GtkWidget *eventbox; - GtkWidget *frame; + GtkWidget *button; GtkWidget *vbox; GtkWidget *date_label; GtkWidget *time_label;