Ensure hand pointer appears when hovering over tool controls
...e.g. size controls in Magic, flip/mirror, size, and rotate controls in Stamps, text style controls in Text and Label, etc.
This commit is contained in:
parent
e43c506d20
commit
90ef703403
2 changed files with 63 additions and 17 deletions
|
|
@ -19,6 +19,11 @@ https://tuxpaint.org/
|
||||||
when stamp controls were disabled.
|
when stamp controls were disabled.
|
||||||
Bill Kendrick <bill@newbreedsoftware.com>
|
Bill Kendrick <bill@newbreedsoftware.com>
|
||||||
|
|
||||||
|
* Ensuring mouse pointer shape changes to hand when hovering over
|
||||||
|
control buttons below the scroll-down arrow in the selector area
|
||||||
|
(e.g., stamp controls, text styles, etc.)
|
||||||
|
Bill Kendrick <bill@newbreedsoftware.com>
|
||||||
|
|
||||||
* Localization Updates:
|
* Localization Updates:
|
||||||
---------------------
|
---------------------
|
||||||
* Bulgarian
|
* Bulgarian
|
||||||
|
|
|
||||||
|
|
@ -596,6 +596,7 @@ static void reposition_onscreen_keyboard(int y);
|
||||||
|
|
||||||
|
|
||||||
int calc_magic_control_rows(void);
|
int calc_magic_control_rows(void);
|
||||||
|
int calc_stamp_control_rows(void);
|
||||||
void maybe_redraw_eraser_xor(void);
|
void maybe_redraw_eraser_xor(void);
|
||||||
|
|
||||||
static void reset_stamps(int *stamp_xored_rt, int *stamp_place_x, int *stamp_place_y, int *stamp_tool_mode);
|
static void reset_stamps(int *stamp_xored_rt, int *stamp_place_x, int *stamp_place_y, int *stamp_tool_mode);
|
||||||
|
|
@ -6381,15 +6382,6 @@ static void mainloop(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This if/if/if block is awful -bjk 2022.01.19 */
|
|
||||||
if (cur_tool == TOOL_STAMP && !disable_stamp_controls)
|
|
||||||
{
|
|
||||||
if (!no_stamp_rotation)
|
|
||||||
control_rows = 4;
|
|
||||||
else
|
|
||||||
control_rows = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cur_tool == TOOL_LABEL)
|
if (cur_tool == TOOL_LABEL)
|
||||||
{
|
{
|
||||||
control_rows = 1;
|
control_rows = 1;
|
||||||
|
|
@ -6401,6 +6393,8 @@ static void mainloop(void)
|
||||||
control_rows = 2;
|
control_rows = 2;
|
||||||
if (cur_tool == TOOL_MAGIC)
|
if (cur_tool == TOOL_MAGIC)
|
||||||
control_rows = calc_magic_control_rows();
|
control_rows = calc_magic_control_rows();
|
||||||
|
if (cur_tool == TOOL_STAMP)
|
||||||
|
control_rows = calc_stamp_control_rows();
|
||||||
if (cur_tool == TOOL_SHAPES && !disable_shape_controls)
|
if (cur_tool == TOOL_SHAPES && !disable_shape_controls)
|
||||||
control_rows = 1;
|
control_rows = 1;
|
||||||
if ((cur_tool == TOOL_BRUSH || cur_tool == TOOL_LINES) && !disable_brushspacing)
|
if ((cur_tool == TOOL_BRUSH || cur_tool == TOOL_LINES) && !disable_brushspacing)
|
||||||
|
|
@ -6436,34 +6430,52 @@ static void mainloop(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* One of the selectors: */
|
/* One of the selectors or controls: */
|
||||||
|
|
||||||
/* FIXME: Also show "cursor_hand" when touching controls (stamp size, brush spacing, etc.!) (See below) -bjk 2022.01.19 */
|
|
||||||
|
|
||||||
which =
|
which =
|
||||||
((event.button.y - r_ttoolopt.h -
|
((event.button.y - r_ttoolopt.h -
|
||||||
img_scroll_up->h) / button_h) * 2 + (event.button.x - (WINDOW_WIDTH - r_ttoolopt.w)) / button_w;
|
img_scroll_up->h) / button_h) * 2 + (event.button.x - (WINDOW_WIDTH - r_ttoolopt.w)) / button_w;
|
||||||
|
|
||||||
if (which < num_things)
|
if (which + *thing_scroll < num_things)
|
||||||
|
{
|
||||||
|
/* A selectable item */
|
||||||
do_setcursor(cursor_hand);
|
do_setcursor(cursor_hand);
|
||||||
|
}
|
||||||
|
else if (which >= (buttons_tall - control_rows) * 2 - 2 /* account for scroll button */)
|
||||||
|
{
|
||||||
|
/* Controls at the bottom (below scroll-down button, if any) */
|
||||||
|
do_setcursor(cursor_hand);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
/* Within the visible items, but nothing selectable */
|
||||||
do_setcursor(cursor_arrow);
|
do_setcursor(cursor_arrow);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* No scroll buttons - must be a selector: */
|
/* No scroll buttons - must be a selector or control: */
|
||||||
|
|
||||||
/* FIXME: Also show "cursor_hand" when touching controls (stamp size, brush spacing, etc.!) (See above) -bjk 2022.01.19 */
|
|
||||||
|
|
||||||
which =
|
which =
|
||||||
((event.button.y - r_ttoolopt.h) / button_h) * 2 +
|
((event.button.y - r_ttoolopt.h) / button_h) * 2 +
|
||||||
(event.button.x - (WINDOW_WIDTH - r_ttoolopt.w)) / button_w;
|
(event.button.x - (WINDOW_WIDTH - r_ttoolopt.w)) / button_w;
|
||||||
|
|
||||||
if (which < num_things)
|
if (which + *thing_scroll < num_things)
|
||||||
|
{
|
||||||
|
/* A selectable item */
|
||||||
do_setcursor(cursor_hand);
|
do_setcursor(cursor_hand);
|
||||||
|
}
|
||||||
|
else if (which >= (buttons_tall - control_rows) * 2)
|
||||||
|
{
|
||||||
|
/* Controls at the bottom (below scroll-down button, if any) */
|
||||||
|
do_setcursor(cursor_hand);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
/* Within the visible items, but nothing selectable */
|
||||||
do_setcursor(cursor_arrow);
|
do_setcursor(cursor_arrow);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (HIT(r_canvas) && keyglobal == 0)
|
else if (HIT(r_canvas) && keyglobal == 0)
|
||||||
|
|
@ -32213,6 +32225,35 @@ int calc_magic_control_rows(void)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How many rows of controls (not actual Stamp items)
|
||||||
|
* are to be displayed at the bottom of the selector?
|
||||||
|
* (Based on whether stamp controls and/or stamp rotation are
|
||||||
|
* disabled)
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
int calc_stamp_control_rows(void)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
|
||||||
|
/* Start with group changing (left/right) buttons */
|
||||||
|
r = 1;
|
||||||
|
|
||||||
|
/* Add Stamp controls (one row flip/mirror, another size) */
|
||||||
|
if (!disable_stamp_controls)
|
||||||
|
{
|
||||||
|
r += 2;
|
||||||
|
|
||||||
|
/* Add Stamp rotation controls */
|
||||||
|
if (!no_stamp_rotation)
|
||||||
|
r++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Redraw the Eraser XOR shape around the cursor if it's within
|
* Redraw the Eraser XOR shape around the cursor if it's within
|
||||||
* the canvas and the current tool is the Eraser.
|
* the canvas and the current tool is the Eraser.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue