month-view: don't show popover when clicking an invalid cell
Because we're using a simple (gint) cast to round y value of the clicked point, a negative y was rounding to a valid cell position and showing the popover even when the user clicked on the blank cells before the actual month view. Fix that by properly checking if y is negative. https://bugzilla.gnome.org/show_bug.cgi?id=755910
This commit is contained in:
@@ -186,6 +186,9 @@ static gint
|
|||||||
real_cell (gint cell,
|
real_cell (gint cell,
|
||||||
gboolean rtl)
|
gboolean rtl)
|
||||||
{
|
{
|
||||||
|
if (cell < 0)
|
||||||
|
return cell;
|
||||||
|
|
||||||
return rtl ? MIRROR (cell, 0, 7) - 1 : cell;
|
return rtl ? MIRROR (cell, 0, 7) - 1 : cell;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -349,7 +352,12 @@ gather_button_event_data (GcalMonthView *view,
|
|||||||
|
|
||||||
y = y - start_grid_y - first_row_gap * cell_height;
|
y = y - start_grid_y - first_row_gap * cell_height;
|
||||||
|
|
||||||
cell = 7 * (gint)(y / cell_height) + (gint)(x / cell_width);
|
/* When we're dealing with 5-row months, the first_row_gap
|
||||||
|
* is never big enought, and (gint)(y / cell_height) always
|
||||||
|
* rounds to 0, resulting in a valid cell number when it is
|
||||||
|
* actually invalid.
|
||||||
|
*/
|
||||||
|
cell = y < 0 ? -1 : 7 * (gint)(y / cell_height) + (gint)(x / cell_width);
|
||||||
|
|
||||||
if (out_on_indicator != NULL)
|
if (out_on_indicator != NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user