Fixes #348639
2006-07-25 Vincent Untz <vuntz@gnome.org> Fixes #348639 * Makefile.am: * drwrigth.c: use GtkStatusIcon instead of libegg. * eggtrayicon.c: removed.
This commit is contained in:
parent
189a2f4f7e
commit
1c194b74dc
3 changed files with 33 additions and 148 deletions
|
@ -1,3 +1,12 @@
|
|||
2006-07-25 Vincent Untz <vuntz@gnome.org>
|
||||
|
||||
Fixes #348639
|
||||
|
||||
* Makefile.am:
|
||||
* drwrigth.c: use GtkStatusIcon instead of libegg.
|
||||
|
||||
* eggtrayicon.c: removed.
|
||||
|
||||
2006-01-09 Rodrigo Moya <rodrigo@novell.com>
|
||||
|
||||
Fixes #326141
|
||||
|
|
|
@ -16,9 +16,7 @@ gnome_typing_monitor_SOURCES = \
|
|||
drw-utils.c \
|
||||
drw-utils.h \
|
||||
drw-selection.c \
|
||||
drw-selection.h \
|
||||
eggtrayicon.c \
|
||||
eggtrayicon.h
|
||||
drw-selection.h
|
||||
|
||||
gnome_typing_monitor_LDADD = @GNOME_LIBS@ @SCREENSAVER_LIBS@
|
||||
gnome_typing_monitor_LDFLAGS = -export-dynamic
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
#include "drw-break-window.h"
|
||||
#include "drw-monitor.h"
|
||||
#include "drw-utils.h"
|
||||
#include "eggtrayicon.h"
|
||||
|
||||
#define BLINK_TIMEOUT 200
|
||||
#define BLINK_TIMEOUT_MIN 120
|
||||
|
@ -85,10 +84,7 @@ struct _DrWright {
|
|||
|
||||
gboolean blink_on;
|
||||
|
||||
EggTrayIcon *icon;
|
||||
GtkWidget *icon_image;
|
||||
GtkWidget *icon_event_box;
|
||||
GtkTooltips *tooltips;
|
||||
GtkStatusIcon *icon;
|
||||
|
||||
GdkPixbuf *neutral_bar;
|
||||
GdkPixbuf *red_bar;
|
||||
|
@ -103,9 +99,6 @@ static void activity_detected_cb (DrwMonitor *monitor,
|
|||
DrWright *drwright);
|
||||
static gboolean maybe_change_state (DrWright *drwright);
|
||||
static gboolean update_tooltip (DrWright *drwright);
|
||||
static gboolean icon_button_press_cb (GtkWidget *widget,
|
||||
GdkEventButton *event,
|
||||
DrWright *drwright);
|
||||
static void break_window_done_cb (GtkWidget *window,
|
||||
DrWright *dr);
|
||||
static void break_window_postpone_cb (GtkWidget *window,
|
||||
|
@ -159,7 +152,8 @@ update_icon (DrWright *dr)
|
|||
gboolean set_pixbuf;
|
||||
|
||||
if (!dr->enabled) {
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (dr->icon_image), dr->disabled_bar);
|
||||
gtk_status_icon_set_from_pixbuf (dr->icon,
|
||||
dr->disabled_bar);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -225,7 +219,8 @@ update_icon (DrWright *dr)
|
|||
255);
|
||||
|
||||
if (set_pixbuf) {
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (dr->icon_image), tmp_pixbuf);
|
||||
gtk_status_icon_set_from_pixbuf (dr->icon,
|
||||
tmp_pixbuf);
|
||||
}
|
||||
|
||||
if (dr->composite_bar) {
|
||||
|
@ -249,9 +244,11 @@ blink_timeout_cb (DrWright *dr)
|
|||
}
|
||||
|
||||
if (dr->blink_on || timeout == 0) {
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (dr->icon_image), dr->composite_bar);
|
||||
gtk_status_icon_set_from_pixbuf (dr->icon,
|
||||
dr->composite_bar);
|
||||
} else {
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (dr->icon_image), dr->neutral_bar);
|
||||
gtk_status_icon_set_from_pixbuf (dr->icon,
|
||||
dr->neutral_bar);
|
||||
}
|
||||
|
||||
dr->blink_on = !dr->blink_on;
|
||||
|
@ -331,7 +328,8 @@ maybe_change_state (DrWright *dr)
|
|||
dr->break_window = NULL;
|
||||
}
|
||||
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (dr->icon_image), dr->neutral_bar);
|
||||
gtk_status_icon_set_from_pixbuf (dr->icon,
|
||||
dr->neutral_bar);
|
||||
|
||||
g_timer_start (dr->timer);
|
||||
g_timer_start (dr->idle_timer);
|
||||
|
@ -397,7 +395,8 @@ maybe_change_state (DrWright *dr)
|
|||
}
|
||||
|
||||
stop_blinking (dr);
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (dr->icon_image), dr->red_bar);
|
||||
gtk_status_icon_set_from_pixbuf (dr->icon,
|
||||
dr->red_bar);
|
||||
|
||||
g_timer_start (dr->timer);
|
||||
|
||||
|
@ -435,7 +434,8 @@ maybe_change_state (DrWright *dr)
|
|||
|
||||
case STATE_BREAK_DONE_SETUP:
|
||||
stop_blinking (dr);
|
||||
gtk_image_set_from_pixbuf (GTK_IMAGE (dr->icon_image), dr->green_bar);
|
||||
gtk_status_icon_set_from_pixbuf (dr->icon,
|
||||
dr->green_bar);
|
||||
|
||||
dr->state = STATE_BREAK_DONE;
|
||||
break;
|
||||
|
@ -466,9 +466,8 @@ update_tooltip (DrWright *dr)
|
|||
gchar *str;
|
||||
|
||||
if (!dr->enabled) {
|
||||
gtk_tooltips_set_tip (GTK_TOOLTIPS (dr->tooltips),
|
||||
dr->icon_event_box,
|
||||
_("Disabled"), _("Disabled"));
|
||||
gtk_status_icon_set_tooltip (dr->icon,
|
||||
_("Disabled"));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -493,9 +492,8 @@ update_tooltip (DrWright *dr)
|
|||
str = g_strdup_printf (_("Less than one minute until the next break"));
|
||||
}
|
||||
|
||||
gtk_tooltips_set_tip (GTK_TOOLTIPS (dr->tooltips),
|
||||
dr->icon_event_box,
|
||||
str, str);
|
||||
gtk_status_icon_set_tooltip (dr->icon,
|
||||
str);
|
||||
|
||||
g_free (str);
|
||||
|
||||
|
@ -664,68 +662,10 @@ popup_about_cb (gpointer callback_data,
|
|||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
popup_menu_position_cb (GtkMenu *menu,
|
||||
gint *x,
|
||||
gint *y,
|
||||
gboolean *push_in,
|
||||
gpointer data)
|
||||
{
|
||||
GtkWidget *w = data;
|
||||
GtkRequisition requisition;
|
||||
gint wx, wy;
|
||||
|
||||
g_return_if_fail (w != NULL);
|
||||
|
||||
gtk_widget_size_request (GTK_WIDGET (menu), &requisition);
|
||||
|
||||
gdk_window_get_origin (w->window, &wx, &wy);
|
||||
|
||||
if (*x < wx)
|
||||
*x = wx;
|
||||
else if (*x > wx + w->allocation.width)
|
||||
*x = wx + w->allocation.width;
|
||||
|
||||
if (*x + requisition.width > gdk_screen_width())
|
||||
*x = gdk_screen_width() - requisition.width;
|
||||
|
||||
if (*y < wy)
|
||||
*y = wy;
|
||||
else if (*y > wy + w->allocation.height)
|
||||
*y = wy + w->allocation.height;
|
||||
|
||||
if (*y + requisition.height > gdk_screen_height())
|
||||
*y = gdk_screen_height() - requisition.height;
|
||||
|
||||
*push_in = TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
icon_button_press_cb (GtkWidget *widget,
|
||||
GdkEventButton *event,
|
||||
DrWright *dr)
|
||||
{
|
||||
GtkWidget *menu;
|
||||
|
||||
if (event->button == 3) {
|
||||
menu = gtk_item_factory_get_widget (dr->popup_factory, "");
|
||||
|
||||
gtk_menu_popup (GTK_MENU (menu),
|
||||
NULL,
|
||||
NULL,
|
||||
popup_menu_position_cb,
|
||||
dr->icon,
|
||||
event->button,
|
||||
event->time);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
popup_menu_cb (GtkWidget *widget,
|
||||
guint button,
|
||||
guint activate_time,
|
||||
DrWright *dr)
|
||||
{
|
||||
GtkWidget *menu;
|
||||
|
@ -735,7 +675,7 @@ popup_menu_cb (GtkWidget *widget,
|
|||
gtk_menu_popup (GTK_MENU (menu),
|
||||
NULL,
|
||||
NULL,
|
||||
popup_menu_position_cb,
|
||||
gtk_status_icon_position_menu,
|
||||
dr->icon,
|
||||
0,
|
||||
gtk_get_current_event_time());
|
||||
|
@ -790,78 +730,18 @@ item_factory_trans_cb (const gchar *path,
|
|||
return _((gchar*) path);
|
||||
}
|
||||
|
||||
static void
|
||||
icon_event_box_destroy_cb (GtkWidget *widget,
|
||||
DrWright *dr)
|
||||
{
|
||||
gtk_widget_destroy (GTK_WIDGET (dr->icon));
|
||||
init_tray_icon (dr);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
icon_event_box_expose_event_cb (GtkWidget *widget,
|
||||
GdkEventExpose *event,
|
||||
DrWright *dr)
|
||||
{
|
||||
if (GTK_WIDGET_HAS_FOCUS (widget)) {
|
||||
gint focus_width, focus_pad;
|
||||
gint x, y, width, height;
|
||||
|
||||
gtk_widget_style_get (widget,
|
||||
"focus-line-width", &focus_width,
|
||||
"focus-padding", &focus_pad,
|
||||
NULL);
|
||||
x = widget->allocation.x + focus_pad;
|
||||
y = widget->allocation.y + focus_pad;
|
||||
width = widget->allocation.width - 2 * focus_pad;
|
||||
height = widget->allocation.height - 2 * focus_pad;
|
||||
|
||||
gtk_paint_focus (widget->style, widget->window,
|
||||
GTK_WIDGET_STATE (widget),
|
||||
&event->area, widget, "button",
|
||||
x, y, width, height);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
init_tray_icon (DrWright *dr)
|
||||
{
|
||||
dr->icon = egg_tray_icon_new (_("Break reminder"));
|
||||
dr->icon = gtk_status_icon_new_from_pixbuf (dr->neutral_bar);
|
||||
|
||||
dr->icon_event_box = gtk_event_box_new ();
|
||||
dr->icon_image = gtk_image_new_from_pixbuf (dr->neutral_bar);
|
||||
gtk_container_add (GTK_CONTAINER (dr->icon_event_box), dr->icon_image);
|
||||
|
||||
gtk_widget_add_events (GTK_WIDGET (dr->icon), GDK_BUTTON_PRESS_MASK | GDK_FOCUS_CHANGE_MASK);
|
||||
gtk_container_add (GTK_CONTAINER (dr->icon), dr->icon_event_box);
|
||||
gtk_widget_show_all (GTK_WIDGET (dr->icon));
|
||||
|
||||
GTK_WIDGET_SET_FLAGS (dr->icon_event_box, GTK_CAN_FOCUS);
|
||||
|
||||
update_tooltip (dr);
|
||||
update_icon (dr);
|
||||
|
||||
g_signal_connect (dr->icon,
|
||||
"button_press_event",
|
||||
G_CALLBACK (icon_button_press_cb),
|
||||
dr);
|
||||
|
||||
g_signal_connect (dr->icon,
|
||||
"destroy",
|
||||
G_CALLBACK (icon_event_box_destroy_cb),
|
||||
dr);
|
||||
|
||||
g_signal_connect (dr->icon,
|
||||
"popup_menu",
|
||||
G_CALLBACK (popup_menu_cb),
|
||||
dr);
|
||||
|
||||
g_signal_connect_after (dr->icon_event_box,
|
||||
"expose_event",
|
||||
G_CALLBACK (icon_event_box_expose_event_cb),
|
||||
dr);
|
||||
}
|
||||
|
||||
static GList *
|
||||
|
@ -981,8 +861,6 @@ drwright_new (void)
|
|||
dr->green_bar = gdk_pixbuf_new_from_file (IMAGEDIR "/bar-green.png", NULL);
|
||||
dr->disabled_bar = gdk_pixbuf_new_from_file (IMAGEDIR "/bar-disabled.png", NULL);
|
||||
|
||||
dr->tooltips = gtk_tooltips_new ();
|
||||
|
||||
init_tray_icon (dr);
|
||||
|
||||
g_timeout_add (10*1000,
|
||||
|
|
Loading…
Add table
Reference in a new issue