rpms/gnome-panel/devel panel-weather.patch, NONE, 1.1 gnome-panel.spec, 1.259, 1.260
Matthias Clasen (mclasen)
fedora-extras-commits at redhat.com
Mon Feb 18 05:47:29 UTC 2008
Author: mclasen
Update of /cvs/extras/rpms/gnome-panel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv3370
Modified Files:
gnome-panel.spec
Added Files:
panel-weather.patch
Log Message:
more intlclock fixes
panel-weather.patch:
--- NEW FILE panel-weather.patch ---
diff -up gnome-panel-2.21.91/applets/clock/clock.c.panel-weather gnome-panel-2.21.91/applets/clock/clock.c
--- gnome-panel-2.21.91/applets/clock/clock.c.panel-weather 2008-02-17 21:54:50.000000000 -0500
+++ gnome-panel-2.21.91/applets/clock/clock.c 2008-02-17 22:06:23.000000000 -0500
@@ -211,6 +211,7 @@ struct _ClockData {
static void update_clock (ClockData * cd);
static void update_tooltip (ClockData * cd);
+static void update_panel_weather (ClockData *cd);
static int clock_timeout_callback (gpointer data);
static float get_itime (time_t current_time);
@@ -1131,8 +1132,6 @@ create_cities_section (ClockData *cd)
G_CALLBACK (location_tile_pressed_cb), cd);
g_signal_connect (city, "timezone-set",
G_CALLBACK (location_tile_timezone_set_cb), cd);
- g_signal_connect (city, "weather-updated",
- G_CALLBACK (location_tile_weather_updated_cb), cd);
g_signal_connect (city, "need-clock-format",
G_CALLBACK (location_tile_need_clock_format_cb), cd);
@@ -1299,7 +1298,6 @@ create_main_clock_button (void)
GtkWidget *button;
button = gtk_toggle_button_new ();
- gtk_container_set_resize_mode (GTK_CONTAINER (button), GTK_RESIZE_IMMEDIATE);
gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
force_no_focus_padding (button);
@@ -1408,6 +1406,8 @@ create_clock_widget (ClockData *cd)
cd->orient = -1;
cd->size = panel_applet_get_size (PANEL_APPLET (cd->applet));
+ update_panel_weather (cd);
+
/* Refresh the clock so that it paints its first state */
refresh_clock_timeout (cd);
applet_change_orient (PANEL_APPLET (cd->applet),
@@ -1974,9 +1974,6 @@ show_date_changed (GConfClient *client,
static void
update_panel_weather (ClockData *cd)
{
- GtkWidget *weatherbox;
-
- weatherbox = gtk_widget_get_parent (cd->panel_weather_icon);
if (cd->show_weather)
gtk_widget_show (cd->panel_weather_icon);
else
@@ -1988,9 +1985,11 @@ update_panel_weather (ClockData *cd)
gtk_widget_hide (cd->panel_temperature_label);
if (cd->show_weather || cd->show_temperature)
- gtk_widget_show (weatherbox);
+ gtk_widget_show (cd->weather_obox);
else
- gtk_widget_hide (weatherbox);
+ gtk_widget_hide (cd->weather_obox);
+
+ gtk_widget_queue_resize (cd->applet);
}
static void
@@ -2036,17 +2035,64 @@ show_temperature_changed (GConfClient *
}
static void
-set_locations (ClockData *cd, GList *locations)
+location_weather_updated_cb (ClockLocation *location,
+ WeatherInfo *info,
+ gpointer data)
{
- free_locations (cd);
+ ClockData *cd = data;
+ const gchar *icon_name;
+ const gchar *temp;
+ GtkIconTheme *theme;
+ GdkPixbuf *pixbuf;
- cd->locations = locations;
+ if (!info || !weather_info_is_valid (info))
+ return;
- if (cd->map_widget)
- clock_map_refresh (CLOCK_MAP (cd->map_widget));
+ if (!clock_location_is_current (location))
+ return;
+
+ icon_name = weather_info_get_icon_name (info);
+ theme = gtk_icon_theme_get_default ();
+ pixbuf = gtk_icon_theme_load_icon (theme, icon_name, 16, 0, NULL);
+
+ temp = weather_info_get_temp_summary (info);
+
+ gtk_image_set_from_pixbuf (GTK_IMAGE (cd->panel_weather_icon), pixbuf);
+ gtk_label_set_text (GTK_LABEL (cd->panel_temperature_label), temp);
+}
+
+static void
+locations_changed (ClockData *cd)
+{
+ GList *l;
+ ClockLocation *loc;
+ glong id;
+
+ for (l = cd->locations; l; l = l->next) {
+ loc = l->data;
+
+ id = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (loc), "weather-updated"));
+ if (id == 0) {
+ id = g_signal_connect (loc, "weather-updated",
+ G_CALLBACK (location_weather_updated_cb), cd);
+ g_object_set_data (G_OBJECT (loc), "weather-updated", GINT_TO_POINTER (id));
+ }
+ }
+
+ if (cd->map_widget)
+ clock_map_refresh (CLOCK_MAP (cd->map_widget));
if (cd->clock_vbox)
- create_cities_section (cd);
+ create_cities_section (cd);
+}
+
+
+static void
+set_locations (ClockData *cd, GList *locations)
+{
+ free_locations (cd);
+ cd->locations = locations;
+ locations_changed (cd);
}
typedef struct {
@@ -2948,7 +2994,6 @@ run_prefs_edit_save (GtkButton *button,
clock_location_set_coords (loc, lat, lon);
clock_location_set_weather_code (loc, weather_code);
} else {
- GList *locs;
WeatherPrefs prefs;
prefs.temperature_unit = cd->temperature_unit;
@@ -2956,9 +3001,8 @@ run_prefs_edit_save (GtkButton *button,
loc = clock_location_new (name, clock_zoneinfo_get_name (info), lat, lon, weather_code, &prefs);
- locs = g_list_copy (cd->locations);
- locs = g_list_append (locs, loc);
- set_locations (cd, locs);
+ cd->locations = g_list_append (cd->locations, loc);
+ locations_changed (cd);
}
save_cities_store (cd);
@@ -3522,14 +3566,13 @@ remove_tree_row (GtkTreeModel *model, Gt
{
ClockData *cd = data;
ClockLocation *loc = NULL;
- GList *list = g_list_copy (cd->locations);
gtk_tree_model_get (model, iter, COL_CITY_LOC, &loc, -1);
- list = g_list_remove (list, loc);
-
gtk_list_store_remove (cd->cities_store, iter);
- set_locations (cd, list);
+ cd->locations = g_list_remove (cd->locations, loc);
+ locations_changed (cd);
+ g_object_unref (loc);
save_cities_store (cd);
}
diff -up gnome-panel-2.21.91/applets/clock/clock-location-tile.c.panel-weather gnome-panel-2.21.91/applets/clock/clock-location-tile.c
--- gnome-panel-2.21.91/applets/clock/clock-location-tile.c.panel-weather 2008-02-17 21:54:42.000000000 -0500
+++ gnome-panel-2.21.91/applets/clock/clock-location-tile.c 2008-02-17 22:06:39.000000000 -0500
@@ -20,7 +20,6 @@ G_DEFINE_TYPE (ClockLocationTile, clock_
enum {
TILE_PRESSED,
TIMEZONE_SET,
- WEATHER_UPDATED,
NEED_CLOCK_FORMAT,
LAST_SIGNAL
};
@@ -113,17 +112,6 @@ clock_location_tile_class_init (ClockLoc
NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
- signals[WEATHER_UPDATED] = g_signal_new ("weather-updated",
- G_TYPE_FROM_CLASS (g_obj_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (ClockLocationTileClass, weather_updated),
- NULL,
- NULL,
- _clock_marshal_VOID__OBJECT_STRING,
- G_TYPE_NONE, 2,
- G_TYPE_OBJECT,
- G_TYPE_STRING);
-
signals[NEED_CLOCK_FORMAT] = g_signal_new ("need-clock-format",
G_TYPE_FROM_CLASS (g_obj_class),
G_SIGNAL_RUN_LAST,
@@ -377,12 +365,6 @@ copy_tm (struct tm *from, struct tm *to)
to->tm_yday = from->tm_yday;
}
-static void
-emit_weather_updated (ClockLocationTile *this, GdkPixbuf *weather_icon, const char *temperature)
-{
- g_signal_emit (this, signals[WEATHER_UPDATED], 0, weather_icon, temperature);
-}
-
static char *
format_time (struct tm *now,
char *tzname,
@@ -447,23 +429,12 @@ clock_location_tile_refresh (ClockLocati
ClockLocationTilePrivate *priv = PRIVATE (this);
gchar *tmp, *tzname;
struct tm now;
- long offset, hours, minutes;
+ long offset;
int format;
g_return_if_fail (IS_CLOCK_LOCATION_TILE (this));
if (clock_location_is_current (priv->location)) {
- if (!GTK_WIDGET_VISIBLE (priv->current_marker)) {
- GdkPixbuf *pixbuf;
- const gchar *temp = NULL;
-
- pixbuf = gtk_image_get_pixbuf (GTK_IMAGE (priv->weather_icon));
- if (clock_location_get_weather_info (priv->location))
- temp = weather_info_get_temp_summary (clock_location_get_weather_info (priv->location));
-
- emit_weather_updated (this, pixbuf, temp);
- }
-
gtk_widget_hide (priv->current_button);
gtk_widget_show (priv->current_marker);
}
@@ -582,7 +553,6 @@ update_weather_icon (ClockLocation *loc,
GdkPixbuf *pixbuf = NULL;
GtkIconTheme *theme = NULL;
const gchar *icon_name;
- const gchar *temp = NULL;
if (!info || !weather_info_is_valid (info))
return;
@@ -591,14 +561,9 @@ update_weather_icon (ClockLocation *loc,
theme = gtk_icon_theme_get_default ();
pixbuf = gtk_icon_theme_load_icon (theme, icon_name, 16, 0, NULL);
- temp = weather_info_get_temp_summary (info);
-
if (pixbuf) {
gtk_image_set_from_pixbuf (GTK_IMAGE (priv->weather_icon), pixbuf);
gtk_alignment_set_padding (GTK_ALIGNMENT (gtk_widget_get_parent (priv->weather_icon)), 0, 0, 0, 6);
- if (clock_location_is_current (loc)) {
- emit_weather_updated (tile, pixbuf, temp);
- }
}
}
diff -up gnome-panel-2.21.91/applets/clock/clock-location-tile.h.panel-weather gnome-panel-2.21.91/applets/clock/clock-location-tile.h
--- gnome-panel-2.21.91/applets/clock/clock-location-tile.h.panel-weather 2008-02-17 21:54:33.000000000 -0500
+++ gnome-panel-2.21.91/applets/clock/clock-location-tile.h 2008-02-17 21:54:59.000000000 -0500
@@ -27,7 +27,6 @@ typedef struct
void (* tile_pressed) (ClockLocationTile *tile);
void (* timezone_set) (ClockLocationTile *tile);
- void (* weather_updated) (ClockLocationTile *tile, GdkPixbuf *weather_icon, const char *temperature);
int (* need_clock_format) (ClockLocationTile *tile);
} ClockLocationTileClass;
Index: gnome-panel.spec
===================================================================
RCS file: /cvs/extras/rpms/gnome-panel/devel/gnome-panel.spec,v
retrieving revision 1.259
retrieving revision 1.260
diff -u -r1.259 -r1.260
--- gnome-panel.spec 18 Feb 2008 00:29:34 -0000 1.259
+++ gnome-panel.spec 18 Feb 2008 05:46:37 -0000 1.260
@@ -22,7 +22,7 @@
Summary: GNOME panel
Name: gnome-panel
Version: 2.21.91
-Release: 3%{?dist}
+Release: 4%{?dist}
URL: http://www.gnome.org
Source0: http://download.gnome.org/sources/gnome-panel/2.21/%{name}-%{version}.tar.bz2
@@ -117,6 +117,9 @@
# make set buttons on location tiles work
Patch17: set-button.patch
+# fix display of weather in the panel button
+Patch18: panel-weather.patch
+
Conflicts: gnome-power-manager < 2.15.3
%description
@@ -165,6 +168,7 @@
%patch15 -p1 -b .localtime
%patch16 -p1 -b .pref-dialogs
%patch17 -p1 -b .set-button
+%patch18 -p1 -b .panel-weather
. %{SOURCE6}
@@ -349,6 +353,9 @@
%{_datadir}/gtk-doc/html/*
%changelog
+* Mon Feb 18 2008 Matthias Clasen <mclasen at redhat.com> - 2.21.91-4
+- Another round of intlclock fixes
+
* Sun Feb 17 2008 Matthias Clasen <mclasen at redhat.com> - 2.21.91-3
- First round of intlclock fixes
More information about the fedora-extras-commits
mailing list