Improve browser open handling
This commit is contained in:
parent
1e6689aed4
commit
7ab1a6d246
|
@ -616,6 +616,14 @@ fastiv_browser_draw(GtkWidget *widget, cairo_t *cr)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
open_entry(GtkWidget *self, const Entry *entry, gboolean new_window)
|
||||||
|
{
|
||||||
|
g_signal_emit(self, browser_signals[ITEM_ACTIVATED], 0, entry->filename,
|
||||||
|
new_window ? GTK_PLACES_OPEN_NEW_WINDOW : GTK_PLACES_OPEN_NORMAL);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
fastiv_browser_button_press_event(GtkWidget *widget, GdkEventButton *event)
|
fastiv_browser_button_press_event(GtkWidget *widget, GdkEventButton *event)
|
||||||
{
|
{
|
||||||
|
@ -623,9 +631,11 @@ fastiv_browser_button_press_event(GtkWidget *widget, GdkEventButton *event)
|
||||||
->button_press_event(widget, event);
|
->button_press_event(widget, event);
|
||||||
|
|
||||||
FastivBrowser *self = FASTIV_BROWSER(widget);
|
FastivBrowser *self = FASTIV_BROWSER(widget);
|
||||||
if (event->type != GDK_BUTTON_PRESS || event->state != 0)
|
if (event->type != GDK_BUTTON_PRESS)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (event->button == GDK_BUTTON_PRIMARY &&
|
|
||||||
|
guint state = event->state & gtk_accelerator_get_default_mod_mask();
|
||||||
|
if (event->button == GDK_BUTTON_PRIMARY && state == 0 &&
|
||||||
gtk_widget_get_focus_on_click(widget))
|
gtk_widget_get_focus_on_click(widget))
|
||||||
gtk_widget_grab_focus(widget);
|
gtk_widget_grab_focus(widget);
|
||||||
|
|
||||||
|
@ -635,13 +645,18 @@ fastiv_browser_button_press_event(GtkWidget *widget, GdkEventButton *event)
|
||||||
|
|
||||||
switch (event->button) {
|
switch (event->button) {
|
||||||
case GDK_BUTTON_PRIMARY:
|
case GDK_BUTTON_PRIMARY:
|
||||||
g_signal_emit(widget, browser_signals[ITEM_ACTIVATED], 0,
|
if (state == 0)
|
||||||
entry->filename, GTK_PLACES_OPEN_NORMAL);
|
return open_entry(widget, entry, FALSE);
|
||||||
return TRUE;
|
if (state == GDK_CONTROL_MASK)
|
||||||
|
return open_entry(widget, entry, TRUE);
|
||||||
|
return FALSE;
|
||||||
case GDK_BUTTON_MIDDLE:
|
case GDK_BUTTON_MIDDLE:
|
||||||
g_signal_emit(widget, browser_signals[ITEM_ACTIVATED], 0,
|
if (state == 0)
|
||||||
entry->filename, GTK_PLACES_OPEN_NEW_WINDOW);
|
return open_entry(widget, entry, TRUE);
|
||||||
return TRUE;
|
return FALSE;
|
||||||
|
case GDK_BUTTON_SECONDARY:
|
||||||
|
// TODO(p): Context menu.
|
||||||
|
return FALSE;
|
||||||
default:
|
default:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue