Sorry, I'm not good with operating probabilities through densities and integrals, so this solution might be incorrect, but you'll get the idea:
I will reformulate the task as "John starts to eat between 11 and 12.45", etc.
Then we have that random variable $Y$, uniformly distributed on $[15,120]$ (in minutes) should get its value between $X$ and $X+45$, where random variable $X$ has uniform distribution on $[0,105]$.
$$P(X<Y<X+45) = P(Y<X+45) - P(Y<X)$$
To calculate these probabilities we will use convolution:
$$F_Y(y) = \frac{y-15}{120-15}, \ y \in [15,120], \ 0 \text{ if less than 15 and 1 if greater than 120}$$
$$f_X(x) = \frac{1}{105-0}, \ x \in [0;105], \ 0 \text{ otherwise}$$
Thus we calculate the second probability, restricting to the range of possible values of $Y$ and $X$ (as PDF of $X$ turns to $0$ elsewhere):
$$P(Y<X) = \int_{[15,105]}P(Y<x)f_x(x)dx = \int_{[15,105]}F_Y(x)f_X(x)dx =$$
$$= \int_{[15,105]}\frac{x-15}{120-15}\frac{1}{105-0}dx = \frac{18}{49}. $$
Then we compute the first probability that should be bigger:
$$P(Y<X+45) = \int_{[15,105]}P(Y<x+45)f_x(x)dx = \int_{[15,105]}F_Y(x+45)f_X(x)dx =$$
$$= \int_{[15,75]}\frac{x+45 -15}{120-15}\frac{1}{105-0}dx + \int_{[75,105]}1\frac{1}{105-0}dx = \frac{20}{49} + \frac{2}{7} = \frac{34}{49}. $$
So our probability should be
$$\frac{34}{49} - \frac{18}{49} = \frac{16}{49}. $$