summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@fedoraproject.org>2008-02-17 20:56:40 +0000
committerMatthias Clasen <mclasen@fedoraproject.org>2008-02-17 20:56:40 +0000
commit498bc6b5fb02c5ddb1e6653adcdaac2aa8be89bb (patch)
treee260def48f8a2accaa71c4e1072642c614512600
parentd727311953e94014b902e35f9497ec65efd12424 (diff)
downloadgnome-panel-498bc6b5fb02c5ddb1e6653adcdaac2aa8be89bb.tar.gz
gnome-panel-498bc6b5fb02c5ddb1e6653adcdaac2aa8be89bb.tar.xz
gnome-panel-498bc6b5fb02c5ddb1e6653adcdaac2aa8be89bb.zip
first round of intlclock fixes
-rw-r--r--gnome-panel.spec17
-rw-r--r--localtime.patch219
-rw-r--r--pref-dialogs.patch29
-rw-r--r--set-button.patch13
4 files changed, 277 insertions, 1 deletions
diff --git a/gnome-panel.spec b/gnome-panel.spec
index 5f9eee5..8e51452 100644
--- a/gnome-panel.spec
+++ b/gnome-panel.spec
@@ -22,7 +22,7 @@
Summary: GNOME panel
Name: gnome-panel
Version: 2.21.91
-Release: 2%{?dist}
+Release: 3%{?dist}
URL: http://www.gnome.org
Source0: http://download.gnome.org/sources/gnome-panel/2.21/%{name}-%{version}.tar.bz2
@@ -108,6 +108,15 @@ Patch11: applet-error.patch
Patch14: gnome-panel-2.21.5-ck-shutdown.patch
+# fix display of times in location tiles in the clock
+Patch15: localtime.patch
+
+# fix some focus issues with preference dialogs
+Patch16: pref-dialogs.patch
+
+# make set buttons on location tiles work
+Patch17: set-button.patch
+
Conflicts: gnome-power-manager < 2.15.3
%description
@@ -153,6 +162,9 @@ Panel Applets using the libpanel-applet library.
%patch10 -p1 -b .preferred-apps
%patch11 -p1 -b .applet-error
%patch14 -p1 -b .ck-shutdown
+%patch15 -p1 -b .localtime
+%patch16 -p1 -b .pref-dialogs
+%patch17 -p1 -b .set-button
. %{SOURCE6}
@@ -337,6 +349,9 @@ fi
%{_datadir}/gtk-doc/html/*
%changelog
+* Sun Feb 17 2008 Matthias Clasen <mclasen@redhat.com> - 2.21.91-3
+- First round of intlclock fixes
+
* Fri Feb 15 2008 Matthias Clasen <mclasen@redhat.com> - 2.21.91-2
- Drop gnome-vfs BR
diff --git a/localtime.patch b/localtime.patch
new file mode 100644
index 0000000..e3da6ed
--- /dev/null
+++ b/localtime.patch
@@ -0,0 +1,219 @@
+--- gnome-panel-2.21.91/applets/clock/clock.c 2008-02-11 16:15:51.000000000 -0500
++++ hacked/applets/clock/clock.c 2008-02-16 01:23:14.000000000 -0500
+@@ -508,7 +508,7 @@
+ ClockLocationTile *tile;
+
+ tile = CLOCK_LOCATION_TILE (l->data);
+- clock_location_tile_refresh (tile);
++ clock_location_tile_refresh (tile, FALSE);
+ }
+ }
+
+@@ -1084,12 +1084,12 @@
+ gtk_label_set_text (GTK_LABEL (cd->panel_temperature_label), temperature);
+ }
+
+-static char *
+-location_tile_need_formatted_time_cb (ClockLocationTile *tile, gpointer data)
++static ClockFormat
++location_tile_need_clock_format_cb(ClockLocationTile *tile, gpointer data)
+ {
+ ClockData *cd = data;
+
+- return format_time (cd);
++ return cd->format;
+ }
+
+ static void
+@@ -1133,8 +1133,10 @@
+ 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-formatted-time",
+- G_CALLBACK (location_tile_need_formatted_time_cb), cd);
++ g_signal_connect (city, "need-clock-format",
++ G_CALLBACK (location_tile_need_clock_format_cb), cd);
++
++ clock_location_tile_refresh (city, TRUE);
+
+ gtk_box_pack_start (GTK_BOX (cd->cities_section),
+ GTK_WIDGET (city),
+--- gnome-panel-2.21.91/applets/clock/clock-location-tile.h 2008-02-11 16:15:51.000000000 -0500
++++ hacked/applets/clock/clock-location-tile.h 2008-02-16 23:42:35.000000000 -0500
+@@ -28,7 +28,8 @@
+ void (* tile_pressed) (ClockLocationTile *tile);
+ void (* timezone_set) (ClockLocationTile *tile);
+ void (* weather_updated) (ClockLocationTile *tile, GdkPixbuf *weather_icon, const char *temperature);
+- char *(* need_formatted_time) (ClockLocationTile *tile);
++ char *(* need_formatted_time) (ClockLocationTile *tile);
++ int (* need_clock_format) (ClockLocationTile *tile);
+ } ClockLocationTileClass;
+
+ GType clock_location_tile_get_type (void);
+@@ -40,7 +41,8 @@
+
+ void weather_info_setup_tooltip (WeatherInfo *info, GtkTooltip *tip);
+
+-void clock_location_tile_refresh (ClockLocationTile *this);
++void clock_location_tile_refresh (ClockLocationTile *this,
++ gboolean force_refresh);
+
+ G_END_DECLS
+ #endif /* __CLOCK_H__ */
+--- gnome-panel-2.21.91/applets/clock/clock-location-tile.c 2008-02-11 16:15:51.000000000 -0500
++++ hacked/applets/clock/clock-location-tile.c 2008-02-16 01:24:40.000000000 -0500
+@@ -11,6 +11,7 @@
+ #include "clock-face.h"
+ #include "clock-location-tile.h"
+ #include "clock-location.h"
++#include "clock-utils.h"
+ #include "clock-marshallers.h"
+ #include "set-timezone.h"
+
+@@ -21,6 +22,7 @@
+ TIMEZONE_SET,
+ WEATHER_UPDATED,
+ NEED_FORMATTED_TIME,
++ NEED_CLOCK_FORMAT,
+ LAST_SIGNAL
+ };
+
+@@ -130,6 +132,15 @@
+ NULL,
+ _clock_marshal_STRING__VOID,
+ G_TYPE_STRING, 0);
++
++ signals[NEED_CLOCK_FORMAT] = g_signal_new ("need-clock-format",
++ G_TYPE_FROM_CLASS (g_obj_class),
++ G_SIGNAL_RUN_LAST,
++ G_STRUCT_OFFSET (ClockLocationTileClass, need_clock_format),
++ NULL,
++ NULL,
++ _clock_marshal_INT__VOID,
++ G_TYPE_INT, 0);
+ }
+
+ static void
+@@ -310,7 +321,7 @@
+ gtk_container_add (GTK_CONTAINER (priv->box), alignment);
+ gtk_container_add (GTK_CONTAINER (this), priv->box);
+
+- clock_location_tile_refresh (this);
++ clock_location_tile_refresh (this, TRUE);
+ }
+
+ static gboolean
+@@ -378,13 +389,72 @@
+ g_signal_emit (this, signals[WEATHER_UPDATED], 0, weather_icon, temperature);
+ }
+
++static char *
++format_time (struct tm *now,
++ char *tzname,
++ ClockFormat clock_format,
++ long offset)
++{
++ char buf[256];
++ char *format;
++ time_t local_t;
++ struct tm local_now;
++ char *utf8;
++ char *tmp;
++ long hours, minutes;
++
++ time (&local_t);
++ localtime_r (&local_t, &local_now);
++
++ if (local_now.tm_wday != now->tm_wday) {
++ if (clock_format == CLOCK_FORMAT_12) {
++ format = _("%l:%M <small>%p (%A)</small>");
++ }
++ else {
++ format = _("%H:%M <small>(%A)</small>");
++ }
++ }
++ else {
++ if (clock_format == CLOCK_FORMAT_12) {
++ format = _("%l:%M <small>%p</small>");
++ }
++ else {
++ format = _("%H:%M");
++ }
++ }
++
++ if (strftime (buf, sizeof (buf), format, now) <= 0) {
++ strcpy (buf, "???");
++ }
++
++ hours = offset / 3600;
++ minutes = labs (offset % 3600) / 60;
++
++ if (hours != 0 && minutes != 0) {
++ tmp = g_strdup_printf ("%s <small>%s %+d:%d</small>", buf, tzname, hours, minutes);
++ }
++ else if (hours != 0) {
++ tmp = g_strdup_printf ("%s <small>%s %+d</small>", buf, tzname, hours);
++ }
++ else {
++ tmp = g_strdup_printf ("%s <small>%s</small>", buf, tzname);
++ }
++
++ utf8 = g_locale_to_utf8 (tmp, -1, NULL, NULL, NULL);
++
++ g_free (tmp);
++
++ return utf8;
++}
++
+ void
+-clock_location_tile_refresh (ClockLocationTile *this)
++clock_location_tile_refresh (ClockLocationTile *this, gboolean force_refresh)
+ {
+ ClockLocationTilePrivate *priv = PRIVATE (this);
+- gchar *tmp, *tmp2, *tzname;
++ gchar *tmp, *tzname;
+ struct tm now;
+ long offset, hours, minutes;
++ int format;
+
+ g_return_if_fail (IS_CLOCK_LOCATION_TILE (this));
+
+@@ -411,7 +481,7 @@
+ clock_face_refresh (CLOCK_FACE (priv->clock_face));
+ }
+
+- if (!clock_needs_label_refresh (this)) {
++ if (!force_refresh && !clock_needs_label_refresh (this)) {
+ return;
+ }
+
+@@ -426,26 +496,15 @@
+ gtk_label_set_markup (GTK_LABEL (priv->city_label), tmp);
+ g_free (tmp);
+
+- tmp = NULL;
+- g_signal_emit (this, signals[NEED_FORMATTED_TIME], 0, &tmp);
++ g_signal_emit (this, signals[NEED_CLOCK_FORMAT], 0, &format);
+
+ offset = - priv->last_offset;
+
+- hours = offset / 3600;
+- minutes = labs (offset % 3600) / 60;
++ tmp = format_time (&now, tzname, format, offset);
+
+- if (hours != 0 && minutes != 0)
+- tmp2 = g_strdup_printf ("%s <small>%+ld:%ld</small>", tmp ? tmp : "", hours, minutes);
+- else if (hours != 0)
+- tmp2 = g_strdup_printf ("%s <small>%+ld</small>", tmp ? tmp : "", hours);
+- else {
+- tmp2 = tmp;
+- tmp = NULL;
+- }
++ gtk_label_set_markup (GTK_LABEL (priv->time_label), tmp);
+
+- gtk_label_set_markup (GTK_LABEL (priv->time_label), tmp2);
+ g_free (tmp);
+- g_free (tmp2);
+ }
+
+ void
diff --git a/pref-dialogs.patch b/pref-dialogs.patch
new file mode 100644
index 0000000..d7ea7da
--- /dev/null
+++ b/pref-dialogs.patch
@@ -0,0 +1,29 @@
+--- gnome-panel-2.21.91/applets/clock/clock.glade 2008-02-11 16:15:51.000000000 -0500
++++ hacked/applets/clock/clock.glade 2008-02-16 01:43:05.000000000 -0500
+@@ -14,7 +14,7 @@
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+- <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
++ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+@@ -484,7 +484,7 @@
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+- <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
++ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+@@ -818,7 +818,7 @@
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+- <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
++ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
diff --git a/set-button.patch b/set-button.patch
new file mode 100644
index 0000000..a5c9635
--- /dev/null
+++ b/set-button.patch
@@ -0,0 +1,13 @@
+diff -up gnome-panel-2.21.91/applets/clock/clock-location-tile.c.set-button gnome-panel-2.21.91/applets/clock/clock-location-tile.c
+--- gnome-panel-2.21.91/applets/clock/clock-location-tile.c.set-button 2008-02-17 15:52:17.000000000 -0500
++++ gnome-panel-2.21.91/applets/clock/clock-location-tile.c 2008-02-17 15:52:54.000000000 -0500
+@@ -223,6 +223,9 @@ enter_or_leave_tile (GtkWidget
+ {
+ ClockLocationTilePrivate *priv = PRIVATE (tile);
+
++ if (event->mode != GDK_CROSSING_NORMAL) {
++ return TRUE;
++ }
+ if (event->type == GDK_ENTER_NOTIFY) {
+ gint can_set;
+