Compare commits
3 Commits
876fda4f55
...
d3b34cd482
| Author | SHA1 | Date | |
|---|---|---|---|
|
d3b34cd482
|
|||
|
b067c1948b
|
|||
|
390e21a72d
|
115
fiv-browser.c
115
fiv-browser.c
@@ -156,7 +156,7 @@ relayout(FivBrowser *self, int width)
|
|||||||
|
|
||||||
GtkBorder padding = {};
|
GtkBorder padding = {};
|
||||||
gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding);
|
gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding);
|
||||||
int available_width = width - padding.left - padding.right;
|
int available_width = width - padding.left - padding.right, max_width = 0;
|
||||||
|
|
||||||
g_array_set_size(self->layouted_rows, 0);
|
g_array_set_size(self->layouted_rows, 0);
|
||||||
// Whatever self->drag_begin_* used to point at might no longer be there,
|
// Whatever self->drag_begin_* used to point at might no longer be there,
|
||||||
@@ -183,7 +183,10 @@ relayout(FivBrowser *self, int width)
|
|||||||
|
|
||||||
g_array_append_val(items,
|
g_array_append_val(items,
|
||||||
((Item) {.entry = entry, .x_offset = x + self->item_border_x}));
|
((Item) {.entry = entry, .x_offset = x + self->item_border_x}));
|
||||||
|
|
||||||
x += width;
|
x += width;
|
||||||
|
if (max_width < width)
|
||||||
|
max_width = width;
|
||||||
}
|
}
|
||||||
if (items->len) {
|
if (items->len) {
|
||||||
append_row(self, &y,
|
append_row(self, &y,
|
||||||
@@ -193,11 +196,9 @@ relayout(FivBrowser *self, int width)
|
|||||||
g_array_free(items, TRUE);
|
g_array_free(items, TRUE);
|
||||||
int total_height = y + padding.bottom;
|
int total_height = y + padding.bottom;
|
||||||
if (self->hadjustment) {
|
if (self->hadjustment) {
|
||||||
gint minimum_width = 0;
|
|
||||||
gtk_widget_get_preferred_width(widget, &minimum_width, NULL);
|
|
||||||
|
|
||||||
gtk_adjustment_set_lower(self->hadjustment, 0);
|
gtk_adjustment_set_lower(self->hadjustment, 0);
|
||||||
gtk_adjustment_set_upper(self->hadjustment, MAX(width, minimum_width));
|
gtk_adjustment_set_upper(self->hadjustment,
|
||||||
|
width + MAX(0, max_width - available_width));
|
||||||
gtk_adjustment_set_step_increment(self->hadjustment, width * 0.1);
|
gtk_adjustment_set_step_increment(self->hadjustment, width * 0.1);
|
||||||
gtk_adjustment_set_page_increment(self->hadjustment, width * 0.9);
|
gtk_adjustment_set_page_increment(self->hadjustment, width * 0.9);
|
||||||
gtk_adjustment_set_page_size(self->hadjustment, width);
|
gtk_adjustment_set_page_size(self->hadjustment, width);
|
||||||
@@ -916,9 +917,12 @@ fiv_browser_get_preferred_width(GtkWidget *widget, gint *minimum, gint *natural)
|
|||||||
|
|
||||||
GtkBorder padding = {};
|
GtkBorder padding = {};
|
||||||
gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding);
|
gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding);
|
||||||
*minimum = *natural =
|
|
||||||
FIV_THUMBNAIL_WIDE_COEFFICIENT * self->item_height + padding.left +
|
// This should ideally reflect thumbnails, but we're in a GtkScrolledWindow,
|
||||||
2 * self->item_border_x + padding.right;
|
// making this rather inconsequential.
|
||||||
|
int fluff = padding.left + 2 * self->item_border_x + padding.right;
|
||||||
|
*minimum = fluff + self->item_height /* Icons are rectangular. */;
|
||||||
|
*natural = fluff + FIV_THUMBNAIL_WIDE_COEFFICIENT * self->item_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -989,14 +993,16 @@ fiv_browser_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
|
|||||||
GTK_WIDGET_CLASS(fiv_browser_parent_class)
|
GTK_WIDGET_CLASS(fiv_browser_parent_class)
|
||||||
->size_allocate(widget, allocation);
|
->size_allocate(widget, allocation);
|
||||||
|
|
||||||
int height = relayout(FIV_BROWSER(widget), allocation->width);
|
relayout(FIV_BROWSER(widget), allocation->width);
|
||||||
|
|
||||||
// Avoid fresh blank space.
|
// Avoid fresh blank space.
|
||||||
|
if (self->hadjustment) {
|
||||||
|
gtk_adjustment_set_value(
|
||||||
|
self->hadjustment, gtk_adjustment_get_value(self->hadjustment));
|
||||||
|
}
|
||||||
if (self->vadjustment) {
|
if (self->vadjustment) {
|
||||||
double y1 = gtk_adjustment_get_value(self->vadjustment);
|
gtk_adjustment_set_value(
|
||||||
double ph = gtk_adjustment_get_page_size(self->vadjustment);
|
self->vadjustment, gtk_adjustment_get_value(self->vadjustment));
|
||||||
if (y1 + ph > height)
|
|
||||||
gtk_adjustment_set_value(self->vadjustment, height - ph);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1063,16 +1069,17 @@ static gboolean
|
|||||||
fiv_browser_button_press_event(GtkWidget *widget, GdkEventButton *event)
|
fiv_browser_button_press_event(GtkWidget *widget, GdkEventButton *event)
|
||||||
{
|
{
|
||||||
FivBrowser *self = FIV_BROWSER(widget);
|
FivBrowser *self = FIV_BROWSER(widget);
|
||||||
GTK_WIDGET_CLASS(fiv_browser_parent_class)
|
if (GTK_WIDGET_CLASS(fiv_browser_parent_class)
|
||||||
->button_press_event(widget, event);
|
->button_press_event(widget, event))
|
||||||
|
return GDK_EVENT_STOP;
|
||||||
|
|
||||||
// Make pressing multiple mouse buttons at once cancel a click.
|
// Make pressing multiple mouse buttons at once cancel a click.
|
||||||
if (self->tracked_button) {
|
if (self->tracked_button) {
|
||||||
abort_button_tracking(self);
|
abort_button_tracking(self);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
}
|
}
|
||||||
if (event->type != GDK_BUTTON_PRESS)
|
if (event->type != GDK_BUTTON_PRESS)
|
||||||
return FALSE;
|
return GDK_EVENT_PROPAGATE;
|
||||||
|
|
||||||
guint state = event->state & gtk_accelerator_get_default_mod_mask();
|
guint state = event->state & gtk_accelerator_get_default_mod_mask();
|
||||||
if (event->button == GDK_BUTTON_PRIMARY && state == 0 &&
|
if (event->button == GDK_BUTTON_PRIMARY && state == 0 &&
|
||||||
@@ -1084,13 +1091,13 @@ fiv_browser_button_press_event(GtkWidget *widget, GdkEventButton *event)
|
|||||||
if (event->button == GDK_BUTTON_SECONDARY)
|
if (event->button == GDK_BUTTON_SECONDARY)
|
||||||
show_context_menu(widget, fiv_io_model_get_location(self->model));
|
show_context_menu(widget, fiv_io_model_get_location(self->model));
|
||||||
else if (event->button != GDK_BUTTON_PRIMARY)
|
else if (event->button != GDK_BUTTON_PRIMARY)
|
||||||
return FALSE;
|
return GDK_EVENT_PROPAGATE;
|
||||||
|
|
||||||
if (self->selected) {
|
if (self->selected) {
|
||||||
self->selected = NULL;
|
self->selected = NULL;
|
||||||
gtk_widget_queue_draw(widget);
|
gtk_widget_queue_draw(widget);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
// In accordance with Nautilus, Thunar, and the mildly confusing
|
// In accordance with Nautilus, Thunar, and the mildly confusing
|
||||||
@@ -1107,7 +1114,7 @@ fiv_browser_button_press_event(GtkWidget *widget, GdkEventButton *event)
|
|||||||
GFile *file = g_file_new_for_uri(entry->uri);
|
GFile *file = g_file_new_for_uri(entry->uri);
|
||||||
show_context_menu(widget, file);
|
show_context_menu(widget, file);
|
||||||
g_object_unref(file);
|
g_object_unref(file);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
// gtk_drag_source_set() would span the whole widget area, we'd have to
|
// gtk_drag_source_set() would span the whole widget area, we'd have to
|
||||||
@@ -1118,25 +1125,26 @@ fiv_browser_button_press_event(GtkWidget *widget, GdkEventButton *event)
|
|||||||
self->tracked_button = event->button;
|
self->tracked_button = event->button;
|
||||||
self->drag_begin_x = event->x;
|
self->drag_begin_x = event->x;
|
||||||
self->drag_begin_y = event->y;
|
self->drag_begin_y = event->y;
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return GDK_EVENT_PROPAGATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
fiv_browser_button_release_event(GtkWidget *widget, GdkEventButton *event)
|
fiv_browser_button_release_event(GtkWidget *widget, GdkEventButton *event)
|
||||||
{
|
{
|
||||||
FivBrowser *self = FIV_BROWSER(widget);
|
FivBrowser *self = FIV_BROWSER(widget);
|
||||||
GTK_WIDGET_CLASS(fiv_browser_parent_class)
|
if (GTK_WIDGET_CLASS(fiv_browser_parent_class)
|
||||||
->button_release_event(widget, event);
|
->button_release_event(widget, event))
|
||||||
|
return GDK_EVENT_STOP;
|
||||||
if (event->button != self->tracked_button)
|
if (event->button != self->tracked_button)
|
||||||
return FALSE;
|
return GDK_EVENT_PROPAGATE;
|
||||||
|
|
||||||
// Middle clicks should only work on the starting entry.
|
// Middle clicks should only work on the starting entry.
|
||||||
const Entry *entry = entry_at(self, self->drag_begin_x, self->drag_begin_y);
|
const Entry *entry = entry_at(self, self->drag_begin_x, self->drag_begin_y);
|
||||||
abort_button_tracking(self);
|
abort_button_tracking(self);
|
||||||
if (!entry || entry != entry_at(self, event->x, event->y))
|
if (!entry || entry != entry_at(self, event->x, event->y))
|
||||||
return FALSE;
|
return GDK_EVENT_PROPAGATE;
|
||||||
|
|
||||||
guint state = event->state & gtk_accelerator_get_default_mod_mask();
|
guint state = event->state & gtk_accelerator_get_default_mod_mask();
|
||||||
if ((event->button == GDK_BUTTON_PRIMARY && state == 0))
|
if ((event->button == GDK_BUTTON_PRIMARY && state == 0))
|
||||||
@@ -1144,24 +1152,33 @@ fiv_browser_button_release_event(GtkWidget *widget, GdkEventButton *event)
|
|||||||
if ((event->button == GDK_BUTTON_PRIMARY && state == GDK_CONTROL_MASK) ||
|
if ((event->button == GDK_BUTTON_PRIMARY && state == GDK_CONTROL_MASK) ||
|
||||||
(event->button == GDK_BUTTON_MIDDLE && state == 0))
|
(event->button == GDK_BUTTON_MIDDLE && state == 0))
|
||||||
return open_entry(widget, entry, TRUE);
|
return open_entry(widget, entry, TRUE);
|
||||||
return FALSE;
|
return GDK_EVENT_PROPAGATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
fiv_browser_motion_notify_event(GtkWidget *widget, GdkEventMotion *event)
|
fiv_browser_motion_notify_event(GtkWidget *widget, GdkEventMotion *event)
|
||||||
{
|
{
|
||||||
FivBrowser *self = FIV_BROWSER(widget);
|
FivBrowser *self = FIV_BROWSER(widget);
|
||||||
GTK_WIDGET_CLASS(fiv_browser_parent_class)
|
if (GTK_WIDGET_CLASS(fiv_browser_parent_class)
|
||||||
->motion_notify_event(widget, event);
|
->motion_notify_event(widget, event))
|
||||||
|
return GDK_EVENT_STOP;
|
||||||
|
|
||||||
|
// Touch screen dragging is how you scroll the parent GtkScrolledWindow,
|
||||||
|
// don't steal that gesture.
|
||||||
|
//
|
||||||
|
// While we could allow dragging items that have been selected,
|
||||||
|
// it's currently impossible to select on touch screens without opening,
|
||||||
|
// and this behaviour/distinction seems unintuitive/surprising.
|
||||||
guint state = event->state & gtk_accelerator_get_default_mod_mask();
|
guint state = event->state & gtk_accelerator_get_default_mod_mask();
|
||||||
if (state != 0 || self->tracked_button != GDK_BUTTON_PRIMARY ||
|
if (state != 0 || self->tracked_button != GDK_BUTTON_PRIMARY ||
|
||||||
!gtk_drag_check_threshold(widget, self->drag_begin_x,
|
!gtk_drag_check_threshold(widget, self->drag_begin_x,
|
||||||
self->drag_begin_y, event->x, event->y)) {
|
self->drag_begin_y, event->x, event->y) ||
|
||||||
|
gdk_device_get_source(gdk_event_get_source_device(
|
||||||
|
(GdkEvent *) event)) == GDK_SOURCE_TOUCHSCREEN) {
|
||||||
const Entry *entry = entry_at(self, event->x, event->y);
|
const Entry *entry = entry_at(self, event->x, event->y);
|
||||||
GdkWindow *window = gtk_widget_get_window(widget);
|
GdkWindow *window = gtk_widget_get_window(widget);
|
||||||
gdk_window_set_cursor(window, entry ? self->pointer : NULL);
|
gdk_window_set_cursor(window, entry ? self->pointer : NULL);
|
||||||
return FALSE;
|
return GDK_EVENT_PROPAGATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The "correct" behaviour is to set the selection on a left mouse button
|
// The "correct" behaviour is to set the selection on a left mouse button
|
||||||
@@ -1169,7 +1186,7 @@ fiv_browser_motion_notify_event(GtkWidget *widget, GdkEventMotion *event)
|
|||||||
const Entry *entry = entry_at(self, self->drag_begin_x, self->drag_begin_y);
|
const Entry *entry = entry_at(self, self->drag_begin_x, self->drag_begin_y);
|
||||||
abort_button_tracking(self);
|
abort_button_tracking(self);
|
||||||
if (!entry)
|
if (!entry)
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
|
|
||||||
self->selected = entry;
|
self->selected = entry;
|
||||||
gtk_widget_queue_draw(widget);
|
gtk_widget_queue_draw(widget);
|
||||||
@@ -1181,7 +1198,7 @@ fiv_browser_motion_notify_event(GtkWidget *widget, GdkEventMotion *event)
|
|||||||
gtk_drag_begin_with_coordinates(widget, target_list, actions,
|
gtk_drag_begin_with_coordinates(widget, target_list, actions,
|
||||||
self->tracked_button, (GdkEvent *) event, event->x, event->y);
|
self->tracked_button, (GdkEvent *) event, event->x, event->y);
|
||||||
gtk_target_list_unref(target_list);
|
gtk_target_list_unref(target_list);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@@ -1191,16 +1208,16 @@ fiv_browser_scroll_event(GtkWidget *widget, GdkEventScroll *event)
|
|||||||
abort_button_tracking(self);
|
abort_button_tracking(self);
|
||||||
if ((event->state & gtk_accelerator_get_default_mod_mask()) !=
|
if ((event->state & gtk_accelerator_get_default_mod_mask()) !=
|
||||||
GDK_CONTROL_MASK)
|
GDK_CONTROL_MASK)
|
||||||
return FALSE;
|
return GDK_EVENT_PROPAGATE;
|
||||||
|
|
||||||
static double delta = 0;
|
static double delta = 0;
|
||||||
switch (event->direction) {
|
switch (event->direction) {
|
||||||
case GDK_SCROLL_UP:
|
case GDK_SCROLL_UP:
|
||||||
set_item_size(self, self->item_size + 1);
|
set_item_size(self, self->item_size + 1);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
case GDK_SCROLL_DOWN:
|
case GDK_SCROLL_DOWN:
|
||||||
set_item_size(self, self->item_size - 1);
|
set_item_size(self, self->item_size - 1);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
case GDK_SCROLL_SMOOTH:
|
case GDK_SCROLL_SMOOTH:
|
||||||
// On GDK/Wayland, the mouse wheel will typically create 1.5 deltas,
|
// On GDK/Wayland, the mouse wheel will typically create 1.5 deltas,
|
||||||
// after dividing a 15 degree click angle from libinput by 10.
|
// after dividing a 15 degree click angle from libinput by 10.
|
||||||
@@ -1210,13 +1227,13 @@ fiv_browser_scroll_event(GtkWidget *widget, GdkEventScroll *event)
|
|||||||
else if (delta >= +1)
|
else if (delta >= +1)
|
||||||
set_item_size(self, self->item_size - 1);
|
set_item_size(self, self->item_size - 1);
|
||||||
else if (!event->is_stop)
|
else if (!event->is_stop)
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
|
|
||||||
delta = 0;
|
delta = 0;
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
default:
|
default:
|
||||||
// Left/right are good to steal from GtkScrolledWindow for consistency.
|
// Left/right are good to steal from GtkScrolledWindow for consistency.
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1388,25 +1405,25 @@ fiv_browser_key_press_event(GtkWidget *widget, GdkEventKey *event)
|
|||||||
case GDK_KEY_Return:
|
case GDK_KEY_Return:
|
||||||
if (self->selected)
|
if (self->selected)
|
||||||
return open_entry(widget, self->selected, FALSE);
|
return open_entry(widget, self->selected, FALSE);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
case GDK_KEY_Left:
|
case GDK_KEY_Left:
|
||||||
move_selection(self, GTK_DIR_LEFT);
|
move_selection(self, GTK_DIR_LEFT);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
case GDK_KEY_Right:
|
case GDK_KEY_Right:
|
||||||
move_selection(self, GTK_DIR_RIGHT);
|
move_selection(self, GTK_DIR_RIGHT);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
case GDK_KEY_Up:
|
case GDK_KEY_Up:
|
||||||
move_selection(self, GTK_DIR_UP);
|
move_selection(self, GTK_DIR_UP);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
case GDK_KEY_Down:
|
case GDK_KEY_Down:
|
||||||
move_selection(self, GTK_DIR_DOWN);
|
move_selection(self, GTK_DIR_DOWN);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
case GDK_KEY_Home:
|
case GDK_KEY_Home:
|
||||||
move_selection_home(self);
|
move_selection_home(self);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
case GDK_KEY_End:
|
case GDK_KEY_End:
|
||||||
move_selection_end(self);
|
move_selection_end(self);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GDK_CONTROL_MASK:
|
case GDK_CONTROL_MASK:
|
||||||
@@ -1414,10 +1431,10 @@ fiv_browser_key_press_event(GtkWidget *widget, GdkEventKey *event)
|
|||||||
switch (event->keyval) {
|
switch (event->keyval) {
|
||||||
case GDK_KEY_plus:
|
case GDK_KEY_plus:
|
||||||
set_item_size(self, self->item_size + 1);
|
set_item_size(self, self->item_size + 1);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
case GDK_KEY_minus:
|
case GDK_KEY_minus:
|
||||||
set_item_size(self, self->item_size - 1);
|
set_item_size(self, self->item_size - 1);
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1494,6 +1511,8 @@ on_long_press(GtkGestureLongPress *lp, gdouble x, gdouble y, gpointer user_data)
|
|||||||
return;
|
return;
|
||||||
#endif // GDK_WINDOWING_X11
|
#endif // GDK_WINDOWING_X11
|
||||||
|
|
||||||
|
// It might also be possible to have long-press just select items,
|
||||||
|
// and show some kind of toolbar with available actions.
|
||||||
GFile *file = g_file_new_for_uri(entry->uri);
|
GFile *file = g_file_new_for_uri(entry->uri);
|
||||||
gtk_menu_popup_at_rect(fiv_context_menu_new(widget, file), window,
|
gtk_menu_popup_at_rect(fiv_context_menu_new(widget, file), window,
|
||||||
&(GdkRectangle) {.x = x, .y = y}, GDK_GRAVITY_NORTH_WEST,
|
&(GdkRectangle) {.x = x, .y = y}, GDK_GRAVITY_NORTH_WEST,
|
||||||
|
|||||||
13
fiv-view.c
13
fiv-view.c
@@ -630,13 +630,14 @@ fiv_view_draw(GtkWidget *widget, cairo_t *cr)
|
|||||||
static gboolean
|
static gboolean
|
||||||
fiv_view_button_press_event(GtkWidget *widget, GdkEventButton *event)
|
fiv_view_button_press_event(GtkWidget *widget, GdkEventButton *event)
|
||||||
{
|
{
|
||||||
// XXX: Return value?
|
if (GTK_WIDGET_CLASS(fiv_view_parent_class)
|
||||||
GTK_WIDGET_CLASS(fiv_view_parent_class)->button_press_event(widget, event);
|
->button_press_event(widget, event))
|
||||||
|
return GDK_EVENT_STOP;
|
||||||
|
|
||||||
if (event->button == GDK_BUTTON_PRIMARY &&
|
if (event->button == GDK_BUTTON_PRIMARY &&
|
||||||
gtk_widget_get_focus_on_click(widget))
|
gtk_widget_get_focus_on_click(widget))
|
||||||
gtk_widget_grab_focus(widget);
|
gtk_widget_grab_focus(widget);
|
||||||
return FALSE;
|
return GDK_EVENT_PROPAGATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SCALE_STEP 1.25
|
#define SCALE_STEP 1.25
|
||||||
@@ -737,9 +738,9 @@ fiv_view_scroll_event(GtkWidget *widget, GdkEventScroll *event)
|
|||||||
{
|
{
|
||||||
FivView *self = FIV_VIEW(widget);
|
FivView *self = FIV_VIEW(widget);
|
||||||
if (!self->image)
|
if (!self->image)
|
||||||
return FALSE;
|
return GDK_EVENT_PROPAGATE;
|
||||||
if (event->state & gtk_accelerator_get_default_mod_mask())
|
if (event->state & gtk_accelerator_get_default_mod_mask())
|
||||||
return FALSE;
|
return GDK_EVENT_PROPAGATE;
|
||||||
|
|
||||||
switch (event->direction) {
|
switch (event->direction) {
|
||||||
case GDK_SCROLL_UP:
|
case GDK_SCROLL_UP:
|
||||||
@@ -749,7 +750,7 @@ fiv_view_scroll_event(GtkWidget *widget, GdkEventScroll *event)
|
|||||||
default:
|
default:
|
||||||
// For some reason, native GdkWindows may also get GDK_SCROLL_SMOOTH.
|
// For some reason, native GdkWindows may also get GDK_SCROLL_SMOOTH.
|
||||||
// Left/right are good to steal from GtkScrolledWindow for consistency.
|
// Left/right are good to steal from GtkScrolledWindow for consistency.
|
||||||
return TRUE;
|
return GDK_EVENT_STOP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user