[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