[Goodies-commits] r3245 - in xfce4-places-plugin/trunk: . panel-plugin
Diego Ongaro
ongardie at xfce.org
Tue Sep 25 03:02:45 CEST 2007
Author: ongardie
Date: 2007-09-25 01:02:44 +0000 (Tue, 25 Sep 2007)
New Revision: 3245
Modified:
xfce4-places-plugin/trunk/ChangeLog
xfce4-places-plugin/trunk/panel-plugin/model.c
xfce4-places-plugin/trunk/panel-plugin/model_system.c
xfce4-places-plugin/trunk/panel-plugin/model_user.c
xfce4-places-plugin/trunk/panel-plugin/model_volumes.c
xfce4-places-plugin/trunk/panel-plugin/view.c
Log:
2007-09-24 Diego Ongaro <ongardie at gmail.com>
* view.c, model*.c: Model now defines all bookmark actions
Modified: xfce4-places-plugin/trunk/ChangeLog
===================================================================
--- xfce4-places-plugin/trunk/ChangeLog 2007-09-24 23:54:16 UTC (rev 3244)
+++ xfce4-places-plugin/trunk/ChangeLog 2007-09-25 01:02:44 UTC (rev 3245)
@@ -5,6 +5,7 @@
* view.c, support.{c,h}: Moved "Open" and "Open Terminal Here"
action creation into support.
* view.c, model.h: Added primary action to bookmarks
+ * view.c, model*.c: Model now defines all bookmark actions
2007-09-20 Diego Ongaro <ongardie at gmail.com>
Modified: xfce4-places-plugin/trunk/panel-plugin/model.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/model.c 2007-09-24 23:54:16 UTC (rev 3244)
+++ xfce4-places-plugin/trunk/panel-plugin/model.c 2007-09-25 01:02:44 UTC (rev 3245)
@@ -63,6 +63,15 @@
{
g_assert(bookmark != NULL);
+ if(bookmark->primary_action != NULL){
+
+ /* don't double-free */
+ if(g_list_find(bookmark->actions, bookmark->primary_action) == NULL)
+ places_bookmark_action_free(bookmark->primary_action);
+
+ bookmark->primary_action = NULL;
+ }
+
if(bookmark->actions != NULL){
places_bookmark_actions_free(bookmark->actions);
bookmark->actions = NULL;
Modified: xfce4-places-plugin/trunk/panel-plugin/model_system.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/model_system.c 2007-09-24 23:54:16 UTC (rev 3244)
+++ xfce4-places-plugin/trunk/panel-plugin/model_system.c 2007-09-25 01:02:44 UTC (rev 3245)
@@ -25,6 +25,7 @@
#include "model_system.h"
#include "model.h"
+#include "support.h"
#include <string.h>
@@ -76,6 +77,7 @@
{
GList *bookmarks = NULL; /* we'll return this */
PlacesBookmark *bookmark;
+ PlacesBookmarkAction *open, *terminal;
ThunarVfsInfo *trash_info;
const gchar *home_dir = xfce_get_homedir();
@@ -88,6 +90,13 @@
bookmark->label = (gchar*) g_get_user_name();
bookmark->uri = (gchar*) home_dir;
bookmark->icon = "gnome-fs-home";
+
+ terminal = places_create_open_terminal_action(bookmark);
+ bookmark->actions = g_list_prepend(bookmark->actions, terminal);
+ open = places_create_open_action(bookmark);
+ bookmark->actions = g_list_prepend(bookmark->actions, open);
+ bookmark->primary_action = open;
+
bookmarks = g_list_append(bookmarks, bookmark);
/* Trash */
@@ -109,6 +118,10 @@
}
thunar_vfs_info_unref(trash_info);
+ open = places_create_open_action(bookmark);
+ bookmark->actions = g_list_prepend(bookmark->actions, open);
+ bookmark->primary_action = open;
+
bookmarks = g_list_append(bookmarks, bookmark);
/* Desktop */
@@ -119,11 +132,21 @@
bookmark->free = pbsys_free_desktop_bookmark;
if(g_file_test(bookmark->uri, G_FILE_TEST_IS_DIR)){
+
+ terminal = places_create_open_terminal_action(bookmark);
+ bookmark->actions = g_list_prepend(bookmark->actions, terminal);
+ open = places_create_open_action(bookmark);
+ bookmark->actions = g_list_prepend(bookmark->actions, open);
+ bookmark->primary_action = open;
+
pbg_priv(bookmark_group)->desktop_exists = TRUE;
bookmarks = g_list_append(bookmarks, bookmark);
+
}else{
+
pbg_priv(bookmark_group)->desktop_exists = FALSE;
places_bookmark_free(bookmark);
+
}
/* File System (/) */
@@ -131,6 +154,13 @@
bookmark->label = _("File System");
bookmark->uri = "/";
bookmark->icon = "gnome-dev-harddisk";
+
+ terminal = places_create_open_terminal_action(bookmark);
+ bookmark->actions = g_list_prepend(bookmark->actions, terminal);
+ open = places_create_open_action(bookmark);
+ bookmark->actions = g_list_prepend(bookmark->actions, open);
+ bookmark->primary_action = open;
+
bookmarks = g_list_append(bookmarks, bookmark);
return bookmarks;
Modified: xfce4-places-plugin/trunk/panel-plugin/model_user.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/model_user.c 2007-09-24 23:54:16 UTC (rev 3244)
+++ xfce4-places-plugin/trunk/panel-plugin/model_user.c 2007-09-25 01:02:44 UTC (rev 3245)
@@ -25,6 +25,7 @@
#include "model_user.h"
#include "model.h"
+#include "support.h"
#include <libxfce4util/libxfce4util.h>
#include <glib.h>
@@ -156,27 +157,44 @@
static GList*
pbuser_get_bookmarks(PlacesBookmarkGroup *bookmark_group)
{
- GList *bookmarks = pbg_priv(bookmark_group)->bookmarks;
- GList *clone = NULL;
- PlacesBookmark *bookmark;
+ const GList *orig_ls = pbg_priv(bookmark_group)->bookmarks;
+ const PlacesBookmark *orig;
+
+ GList *clone_ls = NULL;
+ PlacesBookmark *clone;
- if(bookmarks == NULL){
+ PlacesBookmarkAction *open, *terminal;
+
+
+ if(orig_ls == NULL){
pbuser_build_bookmarks(bookmark_group);
- bookmarks = pbg_priv(bookmark_group)->bookmarks;
+ orig_ls = pbg_priv(bookmark_group)->bookmarks;
}
- bookmarks = g_list_last(bookmarks);
+ orig_ls = g_list_last((GList*) orig_ls);
- while(bookmarks != NULL){
- bookmark = g_memdup(bookmarks->data, sizeof(PlacesBookmark));
- bookmark->uri = g_strdup(bookmark->uri);
- bookmark->label = g_strdup(bookmark->label);
+ while(orig_ls != NULL){
- clone = g_list_prepend(clone, bookmark);
- bookmarks = bookmarks->prev;
+ orig = (PlacesBookmark*) orig_ls->data;
+
+ clone = g_new0(PlacesBookmark, 1);
+ clone->uri = g_strdup(orig->uri);
+ clone->uri_scheme = orig->uri_scheme;
+ clone->label = g_strdup(orig->label);
+ clone->icon = orig->icon;
+ clone->free = pbuser_free_bookmark;
+
+ terminal = places_create_open_terminal_action(clone);
+ clone->actions = g_list_prepend(clone->actions, terminal);
+ open = places_create_open_action(clone);
+ clone->actions = g_list_prepend(clone->actions, open);
+ clone->primary_action = open;
+
+ clone_ls = g_list_prepend(clone_ls, clone);
+ orig_ls = orig_ls->prev;
}
- return clone;
+ return clone_ls;
}
Modified: xfce4-places-plugin/trunk/panel-plugin/model_volumes.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/model_volumes.c 2007-09-24 23:54:16 UTC (rev 3244)
+++ xfce4-places-plugin/trunk/panel-plugin/model_volumes.c 2007-09-25 01:02:44 UTC (rev 3245)
@@ -25,6 +25,7 @@
#include "model.h"
#include "model_volumes.h"
+#include "support.h"
#define EXO_API_SUBJECT_TO_CHANGE
#include <thunar-vfs/thunar-vfs.h>
@@ -93,6 +94,7 @@
static void
pbvol_set_changed(PlacesBookmarkGroup *bookmark_group)
{
+ DBG("-");
pbg_priv(bookmark_group)->changed = TRUE;
}
@@ -100,6 +102,8 @@
static void
pbvol_volumes_added(ThunarVfsVolumeManager *volman, GList *volumes, PlacesBookmarkGroup *bookmark_group)
{
+ DBG("-");
+
pbg_priv(bookmark_group)->changed = TRUE;
while(volumes != NULL){
g_signal_connect_swapped(THUNAR_VFS_VOLUME(volumes->data), "changed",
@@ -111,6 +115,8 @@
static void
pbvol_volumes_removed(ThunarVfsVolumeManager *volman, GList *volumes, PlacesBookmarkGroup *bookmark_group)
{
+ DBG("-");
+
pbg_priv(bookmark_group)->changed = TRUE;
while(volumes != NULL){
g_signal_handlers_disconnect_by_func(THUNAR_VFS_VOLUME(volumes->data),
@@ -143,7 +149,7 @@
{
GList *bookmarks = NULL;
PlacesBookmark *bookmark;
- PlacesBookmarkAction *action;
+ PlacesBookmarkAction *action, *terminal, *open;
const GList *volumes;
ThunarVfsVolume *volume;
GtkIconTheme *icon_theme = gtk_icon_theme_get_default();
@@ -164,6 +170,7 @@
bookmark->free = pbvol_bookmark_free;
if(!thunar_vfs_volume_is_mounted(volume)){
+
g_object_ref(volume);
action = g_new0(PlacesBookmarkAction, 1);
action->label = _("Mount");
@@ -171,10 +178,20 @@
action->action = pbvol_mount;
action->free = pbvol_bookmark_action_free;
bookmark->actions = g_list_append(bookmark->actions, action);
+
+ }else{
+
+ terminal = places_create_open_terminal_action(bookmark);
+ bookmark->actions = g_list_prepend(bookmark->actions, terminal);
+ open = places_create_open_action(bookmark);
+ bookmark->actions = g_list_prepend(bookmark->actions, open);
+ bookmark->primary_action = open;
+
}
if(thunar_vfs_volume_is_disc(volume)){
if(thunar_vfs_volume_is_ejectable(volume)){
+
g_object_ref(volume);
action = g_new0(PlacesBookmarkAction, 1);
action->label = _("Eject");
@@ -182,9 +199,11 @@
action->action = pbvol_eject;
action->free = pbvol_bookmark_action_free;
bookmark->actions = g_list_append(bookmark->actions, action);
+
}
}else{
if(thunar_vfs_volume_is_mounted(volume)){
+
g_object_ref(volume);
action = g_new0(PlacesBookmarkAction, 1);
action->label = _("Unmount");
@@ -192,6 +211,7 @@
action->action = pbvol_unmount;
action->free = pbvol_bookmark_action_free;
bookmark->actions = g_list_append(bookmark->actions, action);
+
}
}
Modified: xfce4-places-plugin/trunk/panel-plugin/view.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/view.c 2007-09-24 23:54:16 UTC (rev 3244)
+++ xfce4-places-plugin/trunk/panel-plugin/view.c 2007-09-25 01:02:44 UTC (rev 3245)
@@ -483,7 +483,6 @@
GtkWidget *item;
GdkPixbuf *pb;
GtkWidget *image;
- PlacesBookmarkAction *terminal, *open;
if(view->needs_separator){
gtk_menu_shell_append(GTK_MENU_SHELL(view->menu),
@@ -503,28 +502,13 @@
}
}
- if(bookmark->uri != NULL){
-
- if(bookmark->uri_scheme != PLACES_URI_SCHEME_TRASH){
- terminal = places_create_open_terminal_action(bookmark);
- bookmark->actions = g_list_prepend(bookmark->actions, terminal);
- }
-
- open = places_create_open_action(bookmark);
- bookmark->actions = g_list_prepend(bookmark->actions, open);
- bookmark->primary_action = open;
-
- }
-
- if(bookmark->actions != NULL){
-
+ if(bookmark->actions != NULL)
g_object_set_data(G_OBJECT(item), "actions", bookmark->actions);
-
- g_signal_connect(item, "button-release-event",
+
+ /* do this always so that the menu doesn't close on right-clicks */
+ g_signal_connect(item, "button-release-event",
G_CALLBACK(pview_cb_menu_item_press), view);
- }
-
if(bookmark->primary_action != NULL){
g_signal_connect_swapped(item, "activate",
@@ -560,9 +544,13 @@
GtkWidget *recent_item;
#endif
+ DBG("destroy menu");
+
/* destroy the old menu, if it exists */
pview_destroy_menu(pd);
+ DBG("building new menu");
+
/* Create a new menu */
pd->menu = gtk_menu_new();
More information about the Goodies-commits
mailing list