Project

General

Profile

Feature #943 » 943_S3_2.patch

Dean Brown, 02/09/2026 03:13 AM

View differences:

client/gui-gtk-3.22/gui_main.c
static GtkWidget *more_arrow_pixmap_container;
static int unit_id_top;
static int unit_ids[MAX_NUM_UNITS_BELOW]; /* ids of the units icons in
static int unit_ids[MAX_NUM_UNITS_BELOW]; /* ids of the units icons in
* information display: (or 0) */
GtkTextView *main_message_area;
GtkTextBuffer *message_buffer = NULL;
......
/**********************************************************************//**
Print extra usage information, including one line help on each option,
to stderr.
to stderr.
**************************************************************************/
static void print_usage(void)
{
......
switch (arg) {
case GTK_DIR_TAB_FORWARD:
case GTK_DIR_TAB_BACKWARD:
if (!gtk_widget_get_can_focus(w)) {
return FALSE;
return FALSE;
}
if (!gtk_widget_is_focus(w)) {
gtk_widget_grab_focus(w);
return TRUE;
gtk_widget_grab_focus(w);
return TRUE;
}
break;
......
&& gtk_text_view_get_editable(GTK_TEXT_VIEW(focus)))) {
/* Propagate event to currently focused entry widget. */
if (gtk_widget_event(focus, ev)) {
/* Do not propagate event to our children. */
return TRUE;
/* Do not propagate event to our children. */
return TRUE;
}
}
}
......
case GDK_KEY_Page_Up:
g_signal_emit_by_name(main_message_area, "move_cursor",
GTK_MOVEMENT_PAGES, -1, FALSE);
GTK_MOVEMENT_PAGES, -1, FALSE);
return TRUE;
case GDK_KEY_Page_Down:
g_signal_emit_by_name(main_message_area, "move_cursor",
GTK_MOVEMENT_PAGES, 1, FALSE);
GTK_MOVEMENT_PAGES, 1, FALSE);
return TRUE;
default:
......
}
if (!(ev->state & ACCL_MOD_KEY)) {
switch (ev->keyval) {
case GDK_KEY_plus:
case GDK_KEY_KP_Add:
zoom_step_up();
return TRUE;
case GDK_KEY_minus:
case GDK_KEY_KP_Subtract:
zoom_step_down();
return TRUE;
......
return TRUE;
case GDK_KEY_KP_Begin:
case GDK_KEY_KP_5:
case GDK_KEY_KP_5:
case GDK_KEY_5:
key_recall_previous_focus_unit();
key_recall_previous_focus_unit();
return TRUE;
case GDK_KEY_Escape:
......
gtk_window_set_position(GTK_WINDOW(w), GTK_WIN_POS_MOUSE);
g_signal_connect(w, "destroy", G_CALLBACK(tearoff_destroy), box);
g_signal_connect(w, "key_press_event",
G_CALLBACK(propagate_keypress), NULL);
G_CALLBACK(propagate_keypress), NULL);
g_object_set_data(G_OBJECT(w), "parent", gtk_widget_get_parent(box));
g_object_set_data(G_OBJECT(w), "toggle", b);
......
gtk_container_add(GTK_CONTAINER(unit_image_button), unit_image);
gtk_grid_attach(GTK_GRID(table), unit_image_button, 0, 0, 1, 1);
g_signal_connect(unit_image_button, "button_press_event",
G_CALLBACK(select_unit_image_callback),
G_CALLBACK(select_unit_image_callback),
GINT_TO_POINTER(-1));
if (!GUI_GTK_OPTION(small_display_layout)) {
......
gtk_widget_set_halign(overview_canvas, GTK_ALIGN_CENTER);
gtk_widget_set_valign(overview_canvas, GTK_ALIGN_CENTER);
gtk_widget_set_size_request(overview_canvas, overview_canvas_store_width,
overview_canvas_store_height);
overview_canvas_store_height);
gtk_widget_set_size_request(overview_scrolled_window, overview_canvas_store_width,
overview_canvas_store_height);
overview_canvas_store_height);
gtk_widget_set_hexpand(overview_canvas, TRUE);
gtk_widget_set_vexpand(overview_canvas, TRUE);
gtk_widget_add_events(overview_canvas, GDK_EXPOSURE_MASK
|GDK_BUTTON_PRESS_MASK
|GDK_POINTER_MOTION_MASK);
|GDK_BUTTON_PRESS_MASK
|GDK_POINTER_MOTION_MASK);
gtk_container_add(GTK_CONTAINER(avbox), overview_scrolled_window);
gtk_container_add(GTK_CONTAINER(overview_scrolled_window),
gtk_container_add(GTK_CONTAINER(overview_scrolled_window),
overview_canvas);
g_signal_connect(overview_canvas, "draw",
G_CALLBACK(overview_canvas_draw), NULL);
G_CALLBACK(overview_canvas_draw), NULL);
g_signal_connect(overview_canvas, "motion_notify_event",
G_CALLBACK(move_overviewcanvas), NULL);
G_CALLBACK(move_overviewcanvas), NULL);
g_signal_connect(overview_canvas, "button_press_event",
G_CALLBACK(butt_down_overviewcanvas), NULL);
G_CALLBACK(butt_down_overviewcanvas), NULL);
/* The rest */
......
break;
case 2:
w = flake_label;
flake_ebox = ebox;
flake_ebox = ebox;
break;
default:
case 3:
......
sw = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
GTK_SHADOW_ETCHED_IN);
GTK_SHADOW_ETCHED_IN);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
GTK_POLICY_ALWAYS);
gtk_container_add(GTK_CONTAINER(vgrid), sw);
label = gtk_label_new(_("Chat"));
......
Set socket writability state
**************************************************************************/
static void set_wait_for_writable_socket(struct connection *pc,
bool socket_writable)
bool socket_writable)
{
static bool previous_state = FALSE;
......
if (!dialog) {
dialog = gtk_message_dialog_new(NULL,
0,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_YES_NO,
_("Are you sure you want to quit?"));
0,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_YES_NO,
_("Are you sure you want to quit?"));
setup_dialog(dialog, toplevel);
gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE);
g_signal_connect(dialog, "response",
G_CALLBACK(quit_dialog_response), NULL);
g_signal_connect(dialog, "response",
G_CALLBACK(quit_dialog_response), NULL);
g_signal_connect(dialog, "destroy",
G_CALLBACK(gtk_widget_destroyed), &dialog);
G_CALLBACK(gtk_widget_destroyed), &dialog);
}
gtk_window_present(GTK_WINDOW(dialog));
......
if (scr_height > 0) {
/* Adjust these options only if we do know the screen height. */
if (scr_height <= 480) {
/* Freeciv is practically unusable outside fullscreen mode in so
* small display */
client/gui-gtk-3.22/menu.c
#include "mapview_common.h"
#include "options.h"
#include "tilespec.h"
#include "zoom.h"
/* client/gui-gtk-3.22 */
#include "chatline.h"
......
static void scenario_properties_callback(GtkMenuItem *item, gpointer data);
static void save_scenario_callback(GtkMenuItem *item, gpointer data);
static void center_view_callback(GtkMenuItem *item, gpointer data);
static void zoom_in_callback(GtkMenuItem *item, gpointer data);
static void zoom_out_callback(GtkMenuItem *item, gpointer data);
static void report_economy_callback(GtkMenuItem *item, gpointer data);
static void report_research_callback(GtkMenuItem *item, gpointer data);
static void multiplier_callback(GtkMenuItem *item, gpointer data);
......
{ "CENTER_VIEW", N_("_Center View"), GDK_KEY_c, 0,
G_CALLBACK(center_view_callback), MGROUP_PLAYER },
{ "ZOOM_IN", N_("_Zoom in"), GDK_KEY_plus, 0,
G_CALLBACK(zoom_in_callback), MGROUP_PLAYER },
{ "ZOOM_OUT", N_("_Zoom out"), GDK_KEY_minus, 0,
G_CALLBACK(zoom_out_callback), MGROUP_PLAYER },
{ "REPORT_ECONOMY", N_("_Economy"), GDK_KEY_F5, 0,
G_CALLBACK(report_economy_callback), MGROUP_PLAYER },
{ "REPORT_RESEARCH", N_("_Research"), GDK_KEY_F6, 0,
......
_("Leaving a local game will end it!"));
setup_dialog(dialog, toplevel);
gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE);
g_signal_connect(dialog, "response",
g_signal_connect(dialog, "response",
G_CALLBACK(leave_local_game_response), NULL);
gtk_window_present(GTK_WINDOW(dialog));
} else {
......
center_on_unit();
}
/************************************************************************//**
Action "ZOOM_IN" callback.
****************************************************************************/
static void zoom_in_callback(GtkMenuItem *action, gpointer data)
{
zoom_step_up();
}
/************************************************************************//**
Action "ZOOM_OUT" callback.
****************************************************************************/
static void zoom_out_callback(GtkMenuItem *action, gpointer data)
{
zoom_step_down();
}
/************************************************************************//**
Action "REPORT_UNITS" callback.
****************************************************************************/
......
units_can_load(punits));
menu_entry_set_sensitive("UNIT_DEBOARD",
units_can_unload(punits));
menu_entry_set_sensitive("UNIT_UNSENTRY",
menu_entry_set_sensitive("UNIT_UNSENTRY",
units_have_activity_on_tile(punits,
ACTIVITY_SENTRY));
menu_entry_set_sensitive("AUTO_SETTLER",
......
extras = extra_type_list_by_cause(EC_IRRIGATION);
if (extra_type_list_size(extras) > 0) {
if (extra_type_list_size(extras) > 0) {
struct extra_type *tgt;
tgt = extra_type_list_get(extras, 0);
......
break;
}
} unit_list_iterate_end;
if (city_on_tile && units_can_do_action(punits, ACTION_JOIN_CITY,
TRUE)) {
menus_rename("BUILD_CITY",
client/gui-gtk-4.0/gui_main.c
case GTK_DIR_TAB_BACKWARD:
if (!gtk_widget_get_can_focus(w)) {
return;
return;
}
if (!gtk_widget_is_focus(w)) {
gtk_widget_grab_focus(w);
return;
gtk_widget_grab_focus(w);
return;
}
break;
......
}
} else if (!(state & GDK_CONTROL_MASK)) {
switch (keyval) {
case GDK_KEY_plus:
case GDK_KEY_KP_Add:
zoom_step_up();
return TRUE;
case GDK_KEY_minus:
case GDK_KEY_KP_Subtract:
zoom_step_down();
return TRUE;
......
gtk_gesture_single_set_button(GTK_GESTURE_SINGLE(mc_gesture), 3);
controller = GTK_EVENT_CONTROLLER(mc_gesture);
g_signal_connect(controller, "pressed",
G_CALLBACK(reverse_taxrates_callback), NULL);
G_CALLBACK(reverse_taxrates_callback), NULL);
gtk_widget_add_controller(econ_label[i], controller);
gtk_grid_attach(GTK_GRID(table2), econ_label[i], i, 0, 1, 1);
}
......
Set socket writability state
**************************************************************************/
static void set_wait_for_writable_socket(struct connection *pc,
bool socket_writable)
bool socket_writable)
{
static bool previous_state = FALSE;
......
if (!dialog) {
dialog = gtk_message_dialog_new(NULL,
0,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_YES_NO,
_("Are you sure you want to quit?"));
0,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_YES_NO,
_("Are you sure you want to quit?"));
setup_dialog(dialog, toplevel);
g_signal_connect(dialog, "response",
client/gui-gtk-4.0/menu.c
#include "mapview_common.h"
#include "options.h"
#include "tilespec.h"
#include "zoom.h"
/* client/gui-gtk-4.0 */
#include "chatline.h"
......
static void center_view_callback(GSimpleAction *action,
GVariant *parameter,
gpointer data);
static void zoom_in_callback(GSimpleAction *action,
GVariant *parameter,
gpointer data);
static void zoom_out_callback(GSimpleAction *action,
GVariant *parameter,
gpointer data);
static void report_economy_callback(GSimpleAction *action,
GVariant *parameter,
gpointer data);
......
{ "CENTER_VIEW", N_("_Center View"),
"center_view", "c", MGROUP_PLAYER | MGROUP_CHAR,
NULL, FALSE },
{ "ZOOM_IN", N_("_Zoom in"),
"zoom_in", "plus", MGROUP_PLAYER,
NULL, FALSE },
{ "ZOOM_OUT", N_("_Zoom out"),
"zoom_out", "minus", MGROUP_PLAYER,
NULL, FALSE },
/* Select menu */
{ "SELECT_SINGLE", N_("_Single Unit (Unselect Others)"),
......
{ "lua_script", client_lua_script_callback },
{ "center_view", center_view_callback },
{ "zoom_in", zoom_in_callback },
{ "zoom_out", zoom_out_callback },
{ "select_single", select_single_callback },
{ "select_all_tile", select_all_on_tile_callback },
......
center_on_unit();
}
/************************************************************************//**
Action "ZOOM_IN" callback.
****************************************************************************/
static void zoom_in_callback(GSimpleAction *action,
GVariant *parameter,
gpointer data)
{
zoom_step_up();
}
/************************************************************************//**
Action "ZOOM_OUT" callback.
****************************************************************************/
static void zoom_out_callback(GSimpleAction *action,
GVariant *parameter,
gpointer data)
{
zoom_step_down();
}
/************************************************************************//**
Action "REPORT_UNITS" callback.
****************************************************************************/
......
menu_entry_init(view_menu, "FULL_SCREEN");
menu_entry_init(view_menu, "CENTER_VIEW");
menu_entry_init(view_menu, "ZOOM_IN");
menu_entry_init(view_menu, "ZOOM_OUT");
submenu_append_unref(menubar, Q_("?verb:_View"), G_MENU_MODEL(view_menu));
data/gtk3.22_menus.xml
<child>
<object class="GtkMenuItem" id="CENTER_VIEW" />
</child>
<child>
<object class="GtkMenuItem" id="ZOOM_IN" />
</child>
<child>
<object class="GtkMenuItem" id="ZOOM_OUT" />
</child>
</object>
</child>
</object>
(1-1/3)