[Goodies-commits] r2645 - in xfce4-quicklauncher-plugin/trunk: . panel-plugin
Masse Nicolas
bountykiller at xfce.org
Sun Apr 1 23:15:34 CEST 2007
Author: bountykiller
Date: 2007-04-01 21:15:34 +0000 (Sun, 01 Apr 2007)
New Revision: 2645
Modified:
xfce4-quicklauncher-plugin/trunk/ChangeLog
xfce4-quicklauncher-plugin/trunk/configure.ac
xfce4-quicklauncher-plugin/trunk/panel-plugin/callbacks.c
xfce4-quicklauncher-plugin/trunk/panel-plugin/main.c
xfce4-quicklauncher-plugin/trunk/panel-plugin/types.h
Log:
+ tooltips and labels are now working correctly
+ internal changes
+ change version number
Modified: xfce4-quicklauncher-plugin/trunk/ChangeLog
===================================================================
--- xfce4-quicklauncher-plugin/trunk/ChangeLog 2007-04-01 14:27:28 UTC (rev 2644)
+++ xfce4-quicklauncher-plugin/trunk/ChangeLog 2007-04-01 21:15:34 UTC (rev 2645)
@@ -1,6 +1,7 @@
++some internal changes
+fix a problem wich makes some launcher lost their widget when adding others
-+add the use of labels (not fully working)
-+add an option for using tooltips (not working yet)
++add the use of labels
++add an option for using tooltips
+replace xfce_icon_theme_load_category (deprecated) by xfce_themed_icon_load_category
Modified: xfce4-quicklauncher-plugin/trunk/configure.ac
===================================================================
--- xfce4-quicklauncher-plugin/trunk/configure.ac 2007-04-01 14:27:28 UTC (rev 2644)
+++ xfce4-quicklauncher-plugin/trunk/configure.ac 2007-04-01 21:15:34 UTC (rev 2645)
@@ -5,7 +5,7 @@
dnl
dnl version info
-m4_define([xfce4_quicklauncher_version],[1.9.2])
+m4_define([xfce4_quicklauncher_version],[1.9.3])
dnl init autoconf
AC_INIT([xfce4-quicklauncher-plugin], [xfce4_quicklauncher_version()], [masse_nicolas at yahoo.fr])
Modified: xfce4-quicklauncher-plugin/trunk/panel-plugin/callbacks.c
===================================================================
--- xfce4-quicklauncher-plugin/trunk/panel-plugin/callbacks.c 2007-04-01 14:27:28 UTC (rev 2644)
+++ xfce4-quicklauncher-plugin/trunk/panel-plugin/callbacks.c 2007-04-01 21:15:34 UTC (rev 2645)
@@ -2,8 +2,8 @@
* callbacks.c
*
* Thu Jul 15 06:01:04 2004
- * Last Update: 18/03/2005
- * Copyright 2004 - 2005 bountykiller
+ * Last Update: 01/04/2007
+ * Copyright 2004 - 2007 bountykiller
* Email: masse_nicolas at yahoo.fr
****************************************************************************/
// This program is free software; you can redistribute it and/or modify
Modified: xfce4-quicklauncher-plugin/trunk/panel-plugin/main.c
===================================================================
--- xfce4-quicklauncher-plugin/trunk/panel-plugin/main.c 2007-04-01 14:27:28 UTC (rev 2644)
+++ xfce4-quicklauncher-plugin/trunk/panel-plugin/main.c 2007-04-01 21:15:34 UTC (rev 2645)
@@ -2,8 +2,8 @@
* main.c
*
* Thu Jul 15 06:01:04 2004
- * Last Update: 03/12/2005
- * Copyright 2004 - 2005 bountykiller
+ * Last Update: 01/04/2007
+ * Copyright 2004 - 2007 bountykiller
* Email: masse_nicolas at yahoo.fr
****************************************************************************/
@@ -43,8 +43,8 @@
void quicklauncher_save_config(t_quicklauncher *quicklauncher, const gchar* filename);
/* Launcher funcs */
-void launcher_passthrough (t_launcher *launcher, gboolean enter);
-void launcher_clicked (t_launcher *launcher, gboolean pressed);
+gboolean launcher_passthrough (GtkWidget *box, GdkEventCrossing *event, t_launcher *launcher);
+gboolean launcher_clicked (GtkWidget *box, GdkEventButton *event, t_launcher *launcher);
void launcher_set_has_tooltip(t_launcher *launcher, gboolean has_tooltip);
void launcher_set_has_label(t_launcher *launcher, gboolean has_label);
t_launcher* launcher_load_config(XfceRc *rcfile, gint num, t_quicklauncher *quicklauncher);
@@ -98,7 +98,7 @@
g_signal_connect (plugin, "save",
G_CALLBACK (quicklauncher_save), quicklauncher);
- xfce_panel_plugin_menu_show_configure (plugin);
+ xfce_panel_plugin_menu_show_configure(plugin);
g_signal_connect (plugin, "configure-plugin",
G_CALLBACK (quicklauncher_configure), quicklauncher);
@@ -121,15 +121,10 @@
gboolean quicklauncher_set_size(XfcePanelPlugin *plugin, gint size,
t_quicklauncher *quicklauncher)
{
- GList *liste;
DBG ("setting size %d", size);
quicklauncher->icon_size = (int) (0.70 * size/quicklauncher->nb_lines);
- for(liste = quicklauncher->launchers;
- liste ; liste = g_list_next(liste) )
- {
- launcher_update_icon((t_launcher*)liste->data, quicklauncher->icon_size);
- //printf("%d %d \n",(int) 0.75 * size/quicklauncher->nb_lines, (int)quicklauncher->icon_size/8);
- }
+ g_list_foreach(quicklauncher->launchers, (GFunc)launcher_update_icon,
+ (gpointer)quicklauncher->icon_size);
return TRUE;
}
@@ -179,17 +174,14 @@
/* -------------------------------------------------------------------- *
- * quicklauncher utility funcs *
+ * quicklauncher utility funcs *
* -------------------------------------------------------------------- */
void
quicklauncher_add_element(t_quicklauncher *quicklauncher, t_launcher *launcher)
{
- GList* iter;
quicklauncher->launchers = g_list_append(quicklauncher->launchers, (gpointer)launcher);
quicklauncher->nb_launcher++;
- for(iter = g_list_first(quicklauncher->launchers);iter; iter = g_list_next(iter))
- DBG(((t_launcher*)iter->data)->command);
}
@@ -235,10 +227,6 @@
{
g_return_if_fail(toplace);
DBG ("To place: %s %d", ((t_launcher*)toplace->data)->command, (gint)((t_launcher*)toplace->data)->box);
- if(!GTK_IS_WIDGET(((t_launcher*)toplace->data)->box))
- {
- g_print("the box has been deleted!");
- }
gtk_table_attach_defaults(GTK_TABLE(quicklauncher->table),
((t_launcher*)toplace->data)->box, j, j+1, i, i+1);
}
@@ -258,11 +246,10 @@
{
DBG ("remove %s %d", ((t_launcher*)launcher->data)->command, (gint)(((t_launcher*)launcher->data)->box));
gtk_container_remove(GTK_CONTAINER(quicklauncher->table), ((t_launcher*)launcher->data)->box);
- if(!GTK_IS_WIDGET(((t_launcher*)launcher->data)->box))
- g_print("the box has been deleted!");
+ DBG ("Is the box alive? %s",
+ GTK_IS_WIDGET(((t_launcher*)launcher->data)->box)?"YES":"NO");
}
}
- DBG ("Widgets removed");
}
@@ -334,96 +321,7 @@
//g_return_if_fail(quicklauncher->nb_launcher == 4);
}
-int _quicklauncher_get_numlauncher(t_quicklauncher *quicklauncher, gdouble x, gdouble y)
-{
- //TODO: Make this work with labels
- int row, col, nb_lines, launch_per_line;
- nb_lines = MIN(quicklauncher->nb_lines, quicklauncher->nb_launcher);
- if (quicklauncher->orientation == GTK_ORIENTATION_HORIZONTAL)
- {
- col = ( (int)x/(quicklauncher->icon_size));
- row = ( (int)y/(xfce_panel_plugin_get_size(quicklauncher->plugin)/quicklauncher->nb_lines));
- if(!(quicklauncher->nb_launcher % quicklauncher->nb_lines))
- launch_per_line = quicklauncher->nb_launcher / quicklauncher->nb_lines;
- else
- launch_per_line = quicklauncher->nb_launcher / quicklauncher->nb_lines + 1;
- return (launch_per_line * row + col);
- }
- else
- {
- col = ( (int)x/(xfce_panel_plugin_get_size(quicklauncher->plugin)/quicklauncher->nb_lines));
- row = ( (int)y/(quicklauncher->icon_size));
- return (nb_lines * row + col);
- }
-}
-static gboolean
-quicklauncher_clicked(XfcePanelPlugin *plugin, GdkEventButton *event, t_quicklauncher *quicklauncher)
-{
- t_launcher *launcher;
- int n_launcher;
- DBG ("quicklauncher_clicked");
- if (event->button != 1)return FALSE;
- n_launcher = _quicklauncher_get_numlauncher(quicklauncher, event->x, event->y);
- DBG ("%d", n_launcher);
- launcher = (t_launcher*) g_list_nth_data(quicklauncher->launchers, n_launcher);
- if(!launcher)
- return FALSE;
- if (event->type == GDK_BUTTON_PRESS)
- launcher_clicked (launcher, TRUE);
- else if (event->type == GDK_BUTTON_RELEASE)
- launcher_clicked (launcher, FALSE);
- return TRUE;
-}
-
-
-
-static gboolean
-quicklauncher_moved(XfcePanelPlugin *plugin, GdkEventMotion *event, t_quicklauncher *quicklauncher)
-{
- int n_launcher;
- t_launcher *launcher;
- DBG ("moved: %f %f", event->x, event->y);
- n_launcher = _quicklauncher_get_numlauncher(quicklauncher, event->x, event->y);
- DBG ("old is: %d\tnew is %d", quicklauncher->_last_zoomed_launcher_id, n_launcher);
- if (n_launcher == quicklauncher->_last_zoomed_launcher_id) return FALSE;
- launcher = (t_launcher*) g_list_nth_data(quicklauncher->launchers, quicklauncher->_last_zoomed_launcher_id);
- if (launcher)
- launcher_passthrough(launcher, FALSE);
- launcher = (t_launcher*) g_list_nth_data(quicklauncher->launchers, n_launcher);
- if (launcher)
- launcher_passthrough(launcher, TRUE);
- quicklauncher->_last_zoomed_launcher_id = n_launcher;
- return TRUE;
-}
-
-static gboolean
-quicklauncher_leave(XfcePanelPlugin *plugin, GdkEventCrossing *event, t_quicklauncher *quicklauncher)
-{
- g_list_foreach(quicklauncher->launchers, (GFunc)launcher_passthrough, NULL);
- quicklauncher->_last_zoomed_launcher_id = -1;
- return TRUE;
-}
-
-static void
-_quicklauncher_update_command(t_quicklauncher *quicklauncher)
-{
- g_return_if_fail(GTK_IS_TABLE(quicklauncher->table));
- if (quicklauncher->command_ids[0] )
- {
- g_signal_handler_disconnect(quicklauncher->plugin, quicklauncher->command_ids[0]);
- g_signal_handler_disconnect(quicklauncher->plugin, quicklauncher->command_ids[1]);
- g_signal_handler_disconnect(quicklauncher->plugin, quicklauncher->command_ids[2]);
- g_signal_handler_disconnect(quicklauncher->plugin, quicklauncher->command_ids[3]);
- }
- quicklauncher->command_ids[0] = g_signal_connect(quicklauncher->plugin, "button_press_event", G_CALLBACK(quicklauncher_clicked), quicklauncher);
- quicklauncher->command_ids[1] = g_signal_connect(quicklauncher->plugin, "button-release-event", G_CALLBACK(quicklauncher_clicked), quicklauncher);
- quicklauncher->command_ids[2] = g_signal_connect(quicklauncher->plugin, "motion-notify-event", G_CALLBACK(quicklauncher_moved), quicklauncher);
- quicklauncher->command_ids[3] = g_signal_connect(quicklauncher->plugin, "leave-notify-event", G_CALLBACK(quicklauncher_leave), quicklauncher);
- DBG ("Update Command ids: %lu %lu %lu %lu", quicklauncher->command_ids[0], quicklauncher->command_ids[1],
- quicklauncher->command_ids[2], quicklauncher->command_ids[3]);
-}
-
t_quicklauncher *
quicklauncher_new (XfcePanelPlugin *plugin)
{
@@ -437,14 +335,13 @@
DBG ("icon size: %d", quicklauncher->icon_size);
quicklauncher->orientation = xfce_panel_plugin_get_orientation(plugin);
quicklauncher->plugin = plugin;
- quicklauncher->_last_zoomed_launcher_id = -1;
+ quicklauncher->_last_zoomed_launcher = NULL;
gtk_widget_add_events(GTK_WIDGET(plugin),GDK_POINTER_MOTION_MASK);
quicklauncher->table = g_object_ref(gtk_table_new(2, 2, FALSE));
gtk_table_set_col_spacings(GTK_TABLE(quicklauncher->table), 0);
gtk_table_set_row_spacings(GTK_TABLE(quicklauncher->table), 0);
gtk_container_add( GTK_CONTAINER(quicklauncher->plugin), quicklauncher->table);
gtk_widget_show(quicklauncher->table);
- _quicklauncher_update_command(quicklauncher);
if((!filename) || (!quicklauncher_load_config(quicklauncher, filename) ) )
quicklauncher_load_default(quicklauncher);
quicklauncher_organize(quicklauncher);
@@ -530,35 +427,42 @@
return pixbuf;
}
-void
-launcher_clicked (t_launcher *launcher, gboolean pressed)
+
+gboolean launcher_clicked (GtkWidget *box, GdkEventButton *event, t_launcher *launcher)
{
DBG ("Launcher clicked => %s", launcher->command);
- if (pressed)
- {
- g_return_if_fail(launcher->zoomed_img);
+ if (event->type == GDK_BUTTON_PRESS)
+ {
+ g_return_val_if_fail(launcher->zoomed_img, FALSE);
if (!launcher->clicked_img)
{
launcher->clicked_img = gdk_pixbuf_copy (launcher->zoomed_img);
gdk_pixbuf_saturate_and_pixelate(launcher->zoomed_img, launcher->clicked_img, 5, TRUE);
}
gtk_image_set_from_pixbuf (GTK_IMAGE(launcher->image), launcher->clicked_img);
+ launcher->quicklauncher->_last_zoomed_launcher = launcher;
}
- else
- {
- g_return_if_fail(launcher->clicked_img);
- xfce_exec(launcher->command, FALSE, FALSE, NULL);
- gtk_image_set_from_pixbuf (GTK_IMAGE(launcher->image), launcher->def_img);
+ else if (event->type == GDK_BUTTON_RELEASE)
+ {
+ if(launcher->quicklauncher->_last_zoomed_launcher == launcher)
+ {
+ g_return_val_if_fail(launcher->clicked_img, FALSE);
+ xfce_exec(launcher->command, FALSE, FALSE, NULL);
+ gtk_image_set_from_pixbuf (GTK_IMAGE(launcher->image), launcher->def_img);
+ }
+ else
+ gtk_image_set_from_pixbuf (GTK_IMAGE(launcher->quicklauncher->_last_zoomed_launcher->image),
+ launcher->def_img);
+ launcher->quicklauncher->_last_zoomed_launcher = NULL;
}
+ return FALSE;
}
-
-void
-launcher_passthrough (t_launcher *launcher, gboolean enter)
+gboolean launcher_passthrough (GtkWidget *box, GdkEventCrossing *event, t_launcher *launcher)
{
- if (enter)
+ if (event->type == GDK_ENTER_NOTIFY)
{
- DBG ("Entred: size=%d", launcher->quicklauncher->icon_size);
+ DBG ("Entred launcher %s", launcher->command);
int size = 1.2 * launcher->quicklauncher->icon_size;
if (!launcher->zoomed_img)
launcher->zoomed_img = gdk_pixbuf_scale_simple(launcher->def_img, size, size, GDK_INTERP_HYPER);
@@ -566,9 +470,10 @@
}
else
{
- DBG ("Exit");
+ DBG ("Exit launcher %s", launcher->command);
gtk_image_set_from_pixbuf (GTK_IMAGE(launcher->image), launcher->def_img);
}
+ return FALSE;
}
@@ -594,11 +499,10 @@
void launcher_set_has_tooltip(t_launcher *launcher, gboolean has_tooltip)
{
- if(launcher->tooltip)
- g_object_unref_sink(launcher->tooltip);
+ UNREF(launcher->tooltip);
if(has_tooltip)
{
- launcher->tooltip = gtk_tooltips_new();
+ launcher->tooltip = g_object_ref_sink(gtk_tooltips_new());
gtk_tooltips_set_tip(launcher->tooltip, launcher->box, launcher->command, launcher->command);
}
else
@@ -613,27 +517,35 @@
if(has_label)
{
launcher->label = gtk_label_new(launcher->command);
- gtk_box_pack_end(GTK_BOX(launcher->box), launcher->label, FALSE, FALSE, 0);
+ gtk_box_pack_end(GTK_BOX(launcher->hbox), launcher->label, FALSE, FALSE, 0);
gtk_widget_show(launcher->label);
}
else
launcher->label = NULL;
}
-
void create_launcher(t_launcher *launcher)
{
- launcher->box = g_object_ref(gtk_hbox_new(FALSE, 0));
+ launcher->box = g_object_ref(gtk_event_box_new());
+ gtk_event_box_set_visible_window(GTK_EVENT_BOX(launcher->box), FALSE);
+ launcher->hbox = g_object_ref(gtk_hbox_new(FALSE, 0));
+ gtk_container_add(GTK_CONTAINER(launcher->box), launcher->hbox);
DBG ("create launcher %s with box %d", launcher->command, (gint)launcher->box);
launcher->image = g_object_ref(gtk_image_new());
- gtk_box_pack_start(GTK_BOX(launcher->box), launcher->image, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(launcher->hbox), launcher->image, FALSE, FALSE, 0);
launcher_update_icon(launcher, launcher->quicklauncher->icon_size);
gtk_widget_show(launcher->image);
launcher_set_has_tooltip(launcher, launcher->quicklauncher->has_tooltips);
launcher_set_has_label(launcher, launcher->quicklauncher->has_labels);
- gtk_widget_show (launcher->box);
+ gtk_widget_show(launcher->hbox);
+ gtk_widget_show(launcher->box);
+ g_signal_connect(launcher->box, "button_press_event", G_CALLBACK(launcher_clicked), launcher);
+ g_signal_connect(launcher->box, "button-release-event", G_CALLBACK(launcher_clicked), launcher);
+ g_signal_connect(launcher->box, "enter-notify-event", G_CALLBACK(launcher_passthrough), launcher);
+ g_signal_connect(launcher->box, "leave-notify-event", G_CALLBACK(launcher_passthrough), launcher);
}
+
t_launcher *launcher_new (const gchar *command, gint icon_id, const gchar *icon_name,
t_quicklauncher* quicklauncher)
{
@@ -658,8 +570,7 @@
UNREF(launcher->def_img);
UNREF(launcher->zoomed_img);
UNREF(launcher->clicked_img);
- if(launcher->tooltip)
- g_object_unref_sink(launcher->tooltip);
+ UNREF(launcher->tooltip);
g_object_unref(launcher->box);
g_object_unref(launcher->image);
g_free(launcher->icon_name);
Modified: xfce4-quicklauncher-plugin/trunk/panel-plugin/types.h
===================================================================
--- xfce4-quicklauncher-plugin/trunk/panel-plugin/types.h 2007-04-01 14:27:28 UTC (rev 2644)
+++ xfce4-quicklauncher-plugin/trunk/panel-plugin/types.h 2007-04-01 21:15:34 UTC (rev 2645)
@@ -2,7 +2,7 @@
* types.h
*
* Thu Jul 15 06:01:04 2004
- * Last Update: 31/03/2007
+ * Last Update: 01/04/2007
* Copyright 2004 - 2007 bountykiller
* Email: masse_nicolas at yahoo.fr
****************************************************************************/
@@ -41,6 +41,7 @@
"Development", "Settings", "System", "Wine", "Stock", "Extern"};
*/
+typedef struct _t_launcher t_launcher;
typedef struct
{
@@ -51,7 +52,7 @@
GtkOrientation orientation;
gint nb_lines;
gint nb_launcher;
- gint _last_zoomed_launcher_id;
+ t_launcher* _last_zoomed_launcher;
gulong command_ids[4];
gboolean has_tooltips;
gboolean has_labels;
@@ -85,9 +86,10 @@
t_qck_launcher_opt_dlg;
-typedef struct
+struct _t_launcher
{
GtkWidget *box;
+ GtkWidget *hbox;
GtkWidget *image;
GtkWidget *label;
GdkPixbuf *def_img;
@@ -98,8 +100,7 @@
gchar *icon_name;
gint icon_id;
t_quicklauncher *quicklauncher;
-}
-t_launcher;
+};
GdkPixbuf *
More information about the Goodies-commits
mailing list