Updating branch refs/heads/jannis/new-shortcuts-pane
to 0ef37a4f4407c009277c66b3a05e98f7e74070de (commit)
from fe991014ace865c589a7087e7c8b0121c7f287e7 (commit)
commit 0ef37a4f4407c009277c66b3a05e98f7e74070de
Author: Jannis Pohlmann <[email protected]>
Date: Thu Jun 9 23:20:55 2011 +0200
Implement the "Open" and "Open in new window" shortcut actions.
thunar/thunar-marshal.list | 1 +
thunar/thunar-shortcut-row.c | 76 ++++++++++-------
thunar/thunar-shortcut-row.h | 50 ++++++-----
thunar/thunar-shortcuts-view.c | 183 ++++++++++++++++++++++++++-------------
4 files changed, 192 insertions(+), 118 deletions(-)
diff --git a/thunar/thunar-marshal.list b/thunar/thunar-marshal.list
index c9d116c..b35db70 100644
--- a/thunar/thunar-marshal.list
+++ b/thunar/thunar-marshal.list
@@ -5,6 +5,7 @@ FLAGS:STRING,FLAGS
VOID:BOXED,OBJECT
VOID:BOXED,POINTER
VOID:STRING,STRING
+VOID:OBJECT,BOOLEAN
VOID:UINT64,UINT,UINT,UINT
VOID:UINT,BOXED,UINT,STRING
VOID:UINT,BOXED
diff --git a/thunar/thunar-shortcut-row.c b/thunar/thunar-shortcut-row.c
index be91cf2..8ae62ae 100644
--- a/thunar/thunar-shortcut-row.c
+++ b/thunar/thunar-shortcut-row.c
@@ -34,6 +34,7 @@
#include <thunar/thunar-enum-types.h>
#include <thunar/thunar-file.h>
#include <thunar/thunar-gio-extensions.h>
+#include <thunar/thunar-marshal.h>
#include <thunar/thunar-preferences.h>
#include <thunar/thunar-private.h>
#include <thunar/thunar-shortcut-row.h>
@@ -126,13 +127,12 @@ static void thunar_shortcut_row_poke_volume_finish
(ThunarBrowser
GVolume
*volume,
ThunarFile
*file,
GError
*error,
- gpointer
unused);
+ gpointer
user_data);
static void thunar_shortcut_row_poke_file_finish (ThunarBrowser
*browser,
ThunarFile
*file,
ThunarFile
*target_file,
GError
*error,
- gpointer
unused);
-static void thunar_shortcut_row_resolve_and_activate (ThunarShortcutRow
*row);
+ gpointer
user_data);
static void thunar_shortcut_row_icon_changed (ThunarShortcutRow
*row);
static void thunar_shortcut_row_label_changed (ThunarShortcutRow
*row);
static void thunar_shortcut_row_location_changed (ThunarShortcutRow
*row);
@@ -301,8 +301,10 @@ thunar_shortcut_row_class_init (ThunarShortcutRowClass
*klass)
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0, NULL, NULL,
- g_cclosure_marshal_VOID__OBJECT,
- G_TYPE_NONE, 1, THUNAR_TYPE_FILE);
+ _thunar_marshal_VOID__OBJECT_BOOLEAN,
+ G_TYPE_NONE, 2,
+ THUNAR_TYPE_FILE,
+ G_TYPE_BOOLEAN);
row_signals[SIGNAL_CONTEXT_MENU] =
g_signal_new (I_("context-menu"),
@@ -572,38 +574,36 @@ thunar_shortcut_row_button_press_event (GtkWidget
*widget,
_thunar_return_val_if_fail (THUNAR_IS_SHORTCUT_ROW (widget), FALSE);
- /* distinguish between left, right and middle-click */
- if (event->button == 1)
- {
- /* determine the widget's state */
- state = gtk_widget_get_state (widget);
+ /* determine the widget's state */
+ state = gtk_widget_get_state (widget);
- if (state == GTK_STATE_SELECTED)
- {
- if ((event->state & GDK_CONTROL_MASK) != 0)
- gtk_widget_set_state (widget, GTK_STATE_NORMAL);
- }
- else
- {
- gtk_widget_set_state (widget, GTK_STATE_SELECTED);
- gtk_widget_grab_focus (widget);
- }
+ if (state == GTK_STATE_SELECTED)
+ {
+ if ((event->state & GDK_CONTROL_MASK) != 0)
+ gtk_widget_set_state (widget, GTK_STATE_NORMAL);
+ }
+ else
+ {
+ gtk_widget_set_state (widget, GTK_STATE_SELECTED);
+ gtk_widget_grab_focus (widget);
+ }
+ /* distinguish between left, right and middle click */
+ if (event->button == 1)
+ {
/* resolve (e.g. mount) the shortcut and activate it */
if (gtk_widget_get_state (widget) == GTK_STATE_SELECTED)
- thunar_shortcut_row_resolve_and_activate (THUNAR_SHORTCUT_ROW
(widget));
+ thunar_shortcut_row_resolve_and_activate (THUNAR_SHORTCUT_ROW
(widget), FALSE);
}
else if (event->button == 3)
{
- /* TODO emit a context-menu signal or something similar here */
+ /* TODO start a context menu timeout */
g_debug ("right button press");
- return FALSE;
}
else if (event->button == 2)
{
/* TODO we don't handle middle-click events yet */
g_debug ("middle button press");
- return FALSE;
}
return TRUE;
@@ -640,6 +640,8 @@ static gboolean
thunar_shortcut_row_key_press_event (GtkWidget *widget,
GdkEventKey *event)
{
+ gboolean new_window;
+
_thunar_return_val_if_fail (THUNAR_IS_SHORTCUT_ROW (widget), FALSE);
if (event->keyval == GDK_KEY_Return
@@ -647,7 +649,11 @@ thunar_shortcut_row_key_press_event (GtkWidget *widget,
|| event->keyval == GDK_KEY_space
|| event->keyval== GDK_KEY_KP_Space)
{
- thunar_shortcut_row_resolve_and_activate (THUNAR_SHORTCUT_ROW (widget));
+ new_window = (event->state & GDK_CONTROL_MASK) != 0;
+
+ thunar_shortcut_row_resolve_and_activate (THUNAR_SHORTCUT_ROW (widget),
+ new_window);
+
return TRUE;
}
@@ -1049,9 +1055,10 @@ thunar_shortcut_row_poke_volume_finish (ThunarBrowser
*browser,
GVolume *volume,
ThunarFile *file,
GError *error,
- gpointer unused)
+ gpointer user_data)
{
ThunarShortcutRow *row = THUNAR_SHORTCUT_ROW (browser);
+ gboolean open_in_new_window = GPOINTER_TO_UINT (user_data);
_thunar_return_if_fail (THUNAR_IS_SHORTCUT_ROW (browser));
_thunar_return_if_fail (G_IS_VOLUME (volume));
@@ -1059,7 +1066,7 @@ thunar_shortcut_row_poke_volume_finish (ThunarBrowser
*browser,
if (error == NULL)
{
- g_signal_emit (row, row_signals[SIGNAL_ACTIVATED], 0, file);
+ g_signal_emit (row, row_signals[SIGNAL_ACTIVATED], 0, file,
open_in_new_window);
}
else
{
@@ -1079,9 +1086,10 @@ thunar_shortcut_row_poke_file_finish (ThunarBrowser
*browser,
ThunarFile *file,
ThunarFile *target_file,
GError *error,
- gpointer unused)
+ gpointer user_data)
{
ThunarShortcutRow *row = THUNAR_SHORTCUT_ROW (browser);
+ gboolean open_in_new_window = GPOINTER_TO_UINT (user_data);
_thunar_return_if_fail (THUNAR_IS_SHORTCUT_ROW (browser));
_thunar_return_if_fail (THUNAR_IS_FILE (file));
@@ -1089,7 +1097,8 @@ thunar_shortcut_row_poke_file_finish (ThunarBrowser
*browser,
if (error == NULL)
{
- g_signal_emit (row, row_signals[SIGNAL_ACTIVATED], 0, target_file);
+ g_signal_emit (row, row_signals[SIGNAL_ACTIVATED], 0, target_file,
+ open_in_new_window);
}
else
{
@@ -1104,8 +1113,9 @@ thunar_shortcut_row_poke_file_finish (ThunarBrowser
*browser,
-static void
-thunar_shortcut_row_resolve_and_activate (ThunarShortcutRow *row)
+void
+thunar_shortcut_row_resolve_and_activate (ThunarShortcutRow *row,
+ gboolean
open_in_new_window)
{
ThunarFile *file;
GError *error = NULL;
@@ -1119,7 +1129,7 @@ thunar_shortcut_row_resolve_and_activate
(ThunarShortcutRow *row)
thunar_browser_poke_volume (THUNAR_BROWSER (row), row->volume, row,
thunar_shortcut_row_poke_volume_finish,
- NULL);
+ GUINT_TO_POINTER (open_in_new_window));
}
else if (row->location != NULL)
{
@@ -1131,7 +1141,7 @@ thunar_shortcut_row_resolve_and_activate
(ThunarShortcutRow *row)
thunar_browser_poke_file (THUNAR_BROWSER (row), file, row,
thunar_shortcut_row_poke_file_finish,
- NULL);
+ GUINT_TO_POINTER (open_in_new_window));
g_object_unref (file);
}
diff --git a/thunar/thunar-shortcut-row.h b/thunar/thunar-shortcut-row.h
index 23dfa04..f69b1f5 100644
--- a/thunar/thunar-shortcut-row.h
+++ b/thunar/thunar-shortcut-row.h
@@ -37,31 +37,33 @@ G_BEGIN_DECLS
typedef struct _ThunarShortcutRowClass ThunarShortcutRowClass;
typedef struct _ThunarShortcutRow ThunarShortcutRow;
-GType thunar_shortcut_row_get_type (void) G_GNUC_CONST;
+GType thunar_shortcut_row_get_type (void)
G_GNUC_CONST;
-void thunar_shortcut_row_set_icon (ThunarShortcutRow
*row,
- GIcon
*icon);
-void thunar_shortcut_row_set_eject_icon (ThunarShortcutRow
*row,
- GIcon
*eject_icon);
-void thunar_shortcut_row_set_label (ThunarShortcutRow
*row,
- const gchar
*label);
-GFile *thunar_shortcut_row_get_location (ThunarShortcutRow
*row);
-void thunar_shortcut_row_set_location (ThunarShortcutRow
*row,
- GFile
*location);
-ThunarFile *thunar_shortcut_row_get_file (ThunarShortcutRow
*row);
-void thunar_shortcut_row_set_file (ThunarShortcutRow
*row,
- ThunarFile
*file);
-GVolume *thunar_shortcut_row_get_volume (ThunarShortcutRow
*row);
-void thunar_shortcut_row_set_volume (ThunarShortcutRow
*row,
- GVolume
*volume);
-GMount *thunar_shortcut_row_get_mount (ThunarShortcutRow
*row);
-void thunar_shortcut_row_set_mount (ThunarShortcutRow
*row,
- GMount
*mount);
-ThunarShortcutType thunar_shortcut_row_get_shortcut_type (ThunarShortcutRow
*row);
-void thunar_shortcut_row_set_shortcut_type (ThunarShortcutRow
*row,
- ThunarShortcutType
shortcut_type);
-void thunar_shortcut_row_set_icon_size (ThunarShortcutRow
*row,
- ThunarIconSize
icon_size);
+void thunar_shortcut_row_set_icon (ThunarShortcutRow
*row,
+ GIcon
*icon);
+void thunar_shortcut_row_set_eject_icon (ThunarShortcutRow
*row,
+ GIcon
*eject_icon);
+void thunar_shortcut_row_set_label (ThunarShortcutRow
*row,
+ const gchar
*label);
+GFile *thunar_shortcut_row_get_location (ThunarShortcutRow
*row);
+void thunar_shortcut_row_set_location (ThunarShortcutRow
*row,
+ GFile
*location);
+ThunarFile *thunar_shortcut_row_get_file (ThunarShortcutRow
*row);
+void thunar_shortcut_row_set_file (ThunarShortcutRow
*row,
+ ThunarFile
*file);
+GVolume *thunar_shortcut_row_get_volume (ThunarShortcutRow
*row);
+void thunar_shortcut_row_set_volume (ThunarShortcutRow
*row,
+ GVolume
*volume);
+GMount *thunar_shortcut_row_get_mount (ThunarShortcutRow
*row);
+void thunar_shortcut_row_set_mount (ThunarShortcutRow
*row,
+ GMount
*mount);
+ThunarShortcutType thunar_shortcut_row_get_shortcut_type (ThunarShortcutRow
*row);
+void thunar_shortcut_row_set_shortcut_type (ThunarShortcutRow
*row,
+
ThunarShortcutType shortcut_type);
+void thunar_shortcut_row_set_icon_size (ThunarShortcutRow
*row,
+ ThunarIconSize
icon_size);
+void thunar_shortcut_row_resolve_and_activate (ThunarShortcutRow
*row,
+ gboolean
open_in_new_window);
G_END_DECLS
diff --git a/thunar/thunar-shortcuts-view.c b/thunar/thunar-shortcuts-view.c
index 3afe01c..3991c63 100644
--- a/thunar/thunar-shortcuts-view.c
+++ b/thunar/thunar-shortcuts-view.c
@@ -74,52 +74,59 @@ typedef void (*ThunarShortcutsViewForeachRowFunc)
(ThunarShortcutsView *view,
-static void thunar_shortcuts_view_constructed (GObject
*object);
-static void thunar_shortcuts_view_finalize (GObject
*object);
-static void thunar_shortcuts_view_get_property (GObject
*object,
- guint
prop_id,
- GValue
*value,
- GParamSpec
*pspec);
-static void thunar_shortcuts_view_set_property (GObject
*object,
- guint
prop_id,
- const GValue
*value,
- GParamSpec
*pspec);
-static void thunar_shortcuts_view_row_inserted
(ThunarShortcutsView *view,
- GtkTreePath
*path,
- GtkTreeIter
*iter,
- GtkTreeModel
*model);
-static void thunar_shortcuts_view_row_deleted
(ThunarShortcutsView *view,
- GtkTreePath
*path,
- GtkTreeModel
*model);
-static void thunar_shortcuts_view_row_changed
(ThunarShortcutsView *view,
- GtkTreePath
*path,
- GtkTreeIter
*iter,
- GtkTreeModel
*model);
-static GtkWidget *thunar_shortcuts_view_get_expander_at
(ThunarShortcutsView *view,
- gint
index);
-static void thunar_shortcuts_view_row_activated
(ThunarShortcutsView *view,
- ThunarFile
*file,
-
ThunarShortcutRow *row);
-static void thunar_shortcuts_view_row_state_changed
(ThunarShortcutsView *view,
- GtkStateType
previous_state,
-
ThunarShortcutRow *row);
-static gboolean thunar_shortcuts_view_row_context_menu
(ThunarShortcutsView *view,
- GtkWidget
*widget);
-static void thunar_shortcuts_view_open
(ThunarShortcutsView *view,
- ThunarFile
*file,
- gboolean
new_window);
-static void thunar_shortcuts_view_foreach_row
(ThunarShortcutsView *view,
-
ThunarShortcutsViewForeachRowFunc func,
- gpointer
user_data);
-static void thunar_shortcuts_view_unselect_rows
(ThunarShortcutsView *view,
-
ThunarShortcutRow *row,
- gpointer
user_data);
-static void thunar_shortcuts_view_unprelight_rows
(ThunarShortcutsView *view,
-
ThunarShortcutRow *row,
- gpointer
user_data);
-static void thunar_shortcuts_view_update_selection_by_file
(ThunarShortcutsView *view,
-
ThunarShortcutRow *row,
- gpointer
user_data);
+static void thunar_shortcuts_view_constructed
(GObject *object);
+static void thunar_shortcuts_view_finalize
(GObject *object);
+static void thunar_shortcuts_view_get_property
(GObject *object,
+
guint prop_id,
+
GValue *value,
+
GParamSpec *pspec);
+static void thunar_shortcuts_view_set_property
(GObject *object,
+
guint prop_id,
+
const GValue *value,
+
GParamSpec *pspec);
+static void thunar_shortcuts_view_row_inserted
(ThunarShortcutsView *view,
+
GtkTreePath *path,
+
GtkTreeIter *iter,
+
GtkTreeModel *model);
+static void thunar_shortcuts_view_row_deleted
(ThunarShortcutsView *view,
+
GtkTreePath *path,
+
GtkTreeModel *model);
+static void thunar_shortcuts_view_row_changed
(ThunarShortcutsView *view,
+
GtkTreePath *path,
+
GtkTreeIter *iter,
+
GtkTreeModel *model);
+static GtkWidget * thunar_shortcuts_view_get_expander_at
(ThunarShortcutsView *view,
+ gint
index);
+static void thunar_shortcuts_view_row_activated
(ThunarShortcutsView *view,
+
ThunarFile *file,
+
gboolean open_in_new_window,
+
ThunarShortcutRow *row);
+static void thunar_shortcuts_view_row_state_changed
(ThunarShortcutsView *view,
+
GtkStateType previous_state,
+
ThunarShortcutRow *row);
+static gboolean thunar_shortcuts_view_row_context_menu
(ThunarShortcutsView *view,
+
GtkWidget *widget);
+static void thunar_shortcuts_view_row_open
(ThunarShortcutsView *view);
+static void thunar_shortcuts_view_row_open_new_window
(ThunarShortcutsView *view);
+static void thunar_shortcuts_view_open
(ThunarShortcutsView *view,
+
ThunarFile *file,
+
gboolean new_window);
+static ThunarShortcutRow *thunar_shortcuts_view_get_selected_row
(ThunarShortcutsView *view);
+static void thunar_shortcuts_view_find_selected_row
(ThunarShortcutsView *view,
+
ThunarShortcutRow *row,
+
gpointer user_data);
+static void thunar_shortcuts_view_foreach_row
(ThunarShortcutsView *view,
+
ThunarShortcutsViewForeachRowFunc func,
+
gpointer user_data);
+static void thunar_shortcuts_view_unselect_rows
(ThunarShortcutsView *view,
+
ThunarShortcutRow *row,
+
gpointer user_data);
+static void thunar_shortcuts_view_unprelight_rows
(ThunarShortcutsView *view,
+
ThunarShortcutRow *row,
+
gpointer user_data);
+static void thunar_shortcuts_view_update_selection_by_file
(ThunarShortcutsView *view,
+
ThunarShortcutRow *row,
+
gpointer user_data);
@@ -144,10 +151,6 @@ static guint view_signals[LAST_SIGNAL];
-static GQuark thunar_shortcuts_view_row_quark;
-
-
-
G_DEFINE_TYPE_WITH_CODE (ThunarShortcutsView, thunar_shortcuts_view,
GTK_TYPE_EVENT_BOX,
G_IMPLEMENT_INTERFACE (THUNAR_TYPE_BROWSER, NULL))
@@ -158,9 +161,6 @@ thunar_shortcuts_view_class_init (ThunarShortcutsViewClass
*klass)
{
GObjectClass *gobject_class;
- /* initialize the row quark */
- thunar_shortcuts_view_row_quark = g_quark_from_static_string
("thunar-shortcuts-view-row");
-
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->constructed = thunar_shortcuts_view_constructed;
gobject_class->finalize = thunar_shortcuts_view_finalize;
@@ -626,13 +626,14 @@ thunar_shortcuts_view_get_expander_at
(ThunarShortcutsView *view,
static void
thunar_shortcuts_view_row_activated (ThunarShortcutsView *view,
ThunarFile *file,
+ gboolean open_in_new_window,
ThunarShortcutRow *row)
{
_thunar_return_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view));
_thunar_return_if_fail (THUNAR_IS_FILE (file));
_thunar_return_if_fail (THUNAR_IS_SHORTCUT_ROW (row));
- thunar_shortcuts_view_open (view, file, FALSE);
+ thunar_shortcuts_view_open (view, file, open_in_new_window);
}
@@ -686,7 +687,8 @@ thunar_shortcuts_view_row_context_menu (ThunarShortcutsView
*view,
/* append the "Open" menu action */
item = gtk_image_menu_item_new_with_mnemonic (_("_Open"));
- g_object_set_qdata (G_OBJECT (item), thunar_shortcuts_view_row_quark, row);
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (thunar_shortcuts_view_row_open), view);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
@@ -697,7 +699,9 @@ thunar_shortcuts_view_row_context_menu (ThunarShortcutsView
*view,
/* append the "Open in New Window" menu action */
item = gtk_image_menu_item_new_with_mnemonic (_("Open in New Window"));
- g_object_set_qdata (G_OBJECT (item), thunar_shortcuts_view_row_quark, row);
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK
(thunar_shortcuts_view_row_open_new_window),
+ view);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
@@ -714,7 +718,6 @@ thunar_shortcuts_view_row_context_menu (ThunarShortcutsView
*view,
{
/* append the "Disconnect" item */
item = gtk_image_menu_item_new_with_mnemonic (_("Disconn_ect"));
- g_object_set_qdata (G_OBJECT (item), thunar_shortcuts_view_row_quark,
row);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
@@ -734,7 +737,6 @@ thunar_shortcuts_view_row_context_menu (ThunarShortcutsView
*view,
/* check if we have a mounted volume */
/* append the "Mount" item */
item = gtk_image_menu_item_new_with_mnemonic (_("_Mount"));
- g_object_set_qdata (G_OBJECT (item), thunar_shortcuts_view_row_quark,
row);
gtk_widget_set_sensitive (item, !thunar_g_volume_is_mounted (volume));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
@@ -743,7 +745,6 @@ thunar_shortcuts_view_row_context_menu (ThunarShortcutsView
*view,
{
/* append the "Unmount" item */
item = gtk_image_menu_item_new_with_mnemonic (_("_Unmount"));
- g_object_set_qdata (G_OBJECT (item),
thunar_shortcuts_view_row_quark, row);
gtk_widget_set_sensitive (item, thunar_g_volume_is_mounted (volume));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
@@ -751,7 +752,6 @@ thunar_shortcuts_view_row_context_menu (ThunarShortcutsView
*view,
/* append the "Disconnect" (eject + safely remove drive) item */
item = gtk_image_menu_item_new_with_mnemonic (_("Disconn_ect"));
- g_object_set_qdata (G_OBJECT (item), thunar_shortcuts_view_row_quark,
row);
gtk_widget_set_sensitive (item, thunar_g_volume_is_mounted (volume));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
@@ -768,7 +768,6 @@ thunar_shortcuts_view_row_context_menu (ThunarShortcutsView
*view,
{
/* append the "Empty Trash" menu action */
item = gtk_image_menu_item_new_with_mnemonic (_("_Empty Trash"));
- g_object_set_qdata (G_OBJECT (item), thunar_shortcuts_view_row_quark,
row);
gtk_widget_set_sensitive (item, (thunar_file_get_item_count (file) > 0));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
@@ -858,6 +857,68 @@ thunar_shortcuts_view_row_context_menu
(ThunarShortcutsView *view,
static void
+thunar_shortcuts_view_row_open (ThunarShortcutsView *view)
+{
+ ThunarShortcutRow *row;
+
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view));
+
+ row = thunar_shortcuts_view_get_selected_row (view);
+
+ if (row != NULL)
+ thunar_shortcut_row_resolve_and_activate (row, FALSE);
+}
+
+
+
+static void
+thunar_shortcuts_view_row_open_new_window (ThunarShortcutsView *view)
+{
+ ThunarShortcutRow *row;
+
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view));
+
+ row = thunar_shortcuts_view_get_selected_row (view);
+
+ if (row != NULL)
+ thunar_shortcut_row_resolve_and_activate (row, TRUE);
+}
+
+
+
+static ThunarShortcutRow *
+thunar_shortcuts_view_get_selected_row (ThunarShortcutsView *view)
+{
+ ThunarShortcutRow *result = NULL;
+
+ _thunar_return_val_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view), NULL);
+
+ thunar_shortcuts_view_foreach_row (view,
thunar_shortcuts_view_find_selected_row,
+ &result);
+
+ return result;
+}
+
+
+
+static void
+thunar_shortcuts_view_find_selected_row (ThunarShortcutsView *view,
+ ThunarShortcutRow *row,
+ gpointer user_data)
+{
+ ThunarShortcutRow **return_value = user_data;
+
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUTS_VIEW (view));
+ _thunar_return_if_fail (THUNAR_IS_SHORTCUT_ROW (row));
+ _thunar_return_if_fail (return_value != NULL);
+
+ if (gtk_widget_get_state (GTK_WIDGET (row)) == GTK_STATE_SELECTED)
+ *return_value = row;
+}
+
+
+
+static void
thunar_shortcuts_view_foreach_row (ThunarShortcutsView *view,
ThunarShortcutsViewForeachRowFunc func,
gpointer user_data)
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits