diff -urN pcb.orig/src/file.c pcb/src/file.c --- pcb.orig/src/file.c 2005-06-10 23:37:36.000000000 -0500 +++ pcb/src/file.c 2005-06-24 14:10:23.459870366 -0500 @@ -213,6 +213,7 @@ LoadPCB (char *Filename) { PCBTypePtr newPCB = CreateNewPCB (False); + gboolean units_mm; /* new data isn't added to the undo list */ if (!ParsePCB (newPCB, Filename)) @@ -252,8 +253,11 @@ UpdatePIPFlags (NULL, NULL, NULL, False); UpdateSettingsOnScreen (); - if (PCB->Grid != (gint) PCB->Grid) - Settings.grid_units_mm = TRUE; + units_mm = (PCB->Grid != (gint) PCB->Grid) ? TRUE : FALSE; + + if (units_mm != Settings.grid_units_mm) + gui_config_handle_units_changed(); + Settings.grid_units_mm = units_mm; gui_sync_with_new_layout(); diff -urN pcb.orig/src/gui-config.c pcb/src/gui-config.c --- pcb.orig/src/gui-config.c 2005-06-07 20:34:25.000000000 -0500 +++ pcb/src/gui-config.c 2005-06-24 14:11:08.108866735 -0500 @@ -1796,6 +1796,10 @@ void gui_config_handle_units_changed(void) { + set_cursor_position_labels(); + gtk_label_set_markup(GTK_LABEL(gui->cursor_units_label), + Settings.grid_units_mm ? + "mm " : "mil "); if (config_sizes_vbox) { gtk_widget_destroy(config_sizes_vbox); @@ -1808,6 +1812,7 @@ config_increments_vbox = NULL; config_increments_tab_create(config_increments_tab_vbox); } + Settings.config_modified = TRUE; } void diff -urN pcb.orig/src/gui-top-window.c pcb/src/gui-top-window.c --- pcb.orig/src/gui-top-window.c 2005-06-10 23:37:36.000000000 -0500 +++ pcb/src/gui-top-window.c 2005-06-24 14:10:48.911737709 -0500 @@ -432,10 +432,6 @@ ActionSetValue("Grid", grid, ""); g_free(grid); - set_cursor_position_labels(); - gtk_label_set_markup(GTK_LABEL(gui->cursor_units_label), - Settings.grid_units_mm ? - "mm " : "mil "); gui_config_handle_units_changed(); gui_change_selected_update_menu_actions(); } diff -urN pcb.orig/src/global.h pcb/src/global.h --- pcb.orig/src/global.h 2005-06-10 23:37:36.000000000 -0500 +++ pcb/src/global.h 2005-06-24 17:09:09.896422652 -0500 @@ -522,6 +522,7 @@ grid_units_mm, small_layer_enable_label_markup, gui_compact_horizontal, + gui_title_window, use_command_window, verbose; diff -urN pcb.orig/src/gui-config.c pcb/src/gui-config.c --- pcb.orig/src/gui-config.c 2005-06-07 20:34:25.000000000 -0500 +++ pcb/src/gui-config.c 2005-06-24 17:09:23.163954464 -0500 @@ -90,6 +90,7 @@ { /* booleans */ {"gui-compact-horizontal", &Settings.gui_compact_horizontal, "0"}, + {"gui-title-window", &Settings.gui_title_window, "0"}, {"use-command-window", &Settings.use_command_window, "1"}, {"grid-units-mm", &Settings.grid_units_mm, "0"}, {"all-direction-lines", &Settings.AllDirectionLines, "0"}, @@ -670,6 +671,17 @@ FALSE, FALSE, 0); } set_status_line_label(); + Settings.config_modified = TRUE; + } + +static void +config_title_window_cb(GtkToggleButton *button, gpointer data) + { + gboolean active = gtk_toggle_button_get_active(button); + + Settings.gui_title_window = active; + gui_output_set_name_label(gui->name_label_string); + Settings.config_modified = TRUE; } static void @@ -719,6 +731,11 @@ config_compact_toggle_cb, NULL, _("Compact horizontal top window for narrow screens")); + gui_check_button_connected(vbox, NULL, Settings.gui_title_window, + TRUE, FALSE, FALSE, 2, + config_title_window_cb, NULL, + _("Put layout name on the window title bar")); + #if 0 /* Works poorly */ gui_check_button_connected(vbox, NULL, Settings.StipplePolygons, diff -urN pcb.orig/src/gui-top-window.c pcb/src/gui-top-window.c --- pcb.orig/src/gui-top-window.c 2005-06-10 23:37:36.000000000 -0500 +++ pcb/src/gui-top-window.c 2005-06-24 17:09:19.495636943 -0500 @@ -2259,15 +2259,31 @@ } - /* Set the PCB name label. + /* Set the PCB name on a label or on the window title bar. */ void gui_output_set_name_label(gchar *name) { gchar *str; - str = g_strdup_printf(" %s ", name ? name : "Unnamed"); - gtk_label_set_markup(GTK_LABEL(gui->name_label), str); + dup_string(&gui->name_label_string, name); + if (!gui->name_label_string || !*gui->name_label_string) + gui->name_label_string = g_strdup(_("Unnamed")); + + if (Settings.gui_title_window) + { + gtk_widget_hide(gui->name_label); + str = g_strdup_printf("PCB: %s", gui->name_label_string); + gtk_window_set_title(GTK_WINDOW(Output.top_window), str); + } + else + { + gtk_widget_show(gui->name_label); + str = g_strdup_printf(" %s ", + gui->name_label_string); + gtk_label_set_markup(GTK_LABEL(gui->name_label), str); + gtk_window_set_title(GTK_WINDOW(Output.top_window), "PCB"); + } g_free(str); } diff -urN pcb.orig/src/gui.h pcb/src/gui.h --- pcb.orig/src/gui.h 2005-03-13 08:59:49.000000000 -0600 +++ pcb/src/gui.h 2005-06-24 17:09:09.901421722 -0500 @@ -109,6 +109,8 @@ GtkObject *h_adjustment, *v_adjustment; + gchar *name_label_string; + gboolean adjustment_changed_holdoff, toggle_holdoff, command_entry_status_line_active; diff -urN pcb.orig/src/find.c pcb/src/find.c --- pcb.orig/src/find.c 2005-03-11 20:17:11.000000000 -0600 +++ pcb/src/find.c 2005-03-28 23:34:58.611566448 -0600 @@ -152,7 +152,7 @@ * message when asked about continuing DRC checks after first * violation is found. */ -#define DRC_CONTINUE _("Stop here? (Cancel to continue checking)") +#define DRC_CONTINUE _("Press OK to continue DRC checking") /* --------------------------------------------------------------------------- * some local types @@ -3466,7 +3466,7 @@ drc = False; drcerr_count++; GotoError (); - if (gui_dialog_confirm(DRC_CONTINUE)) + if (!gui_dialog_confirm(DRC_CONTINUE)) return (True); IncrementUndoSerialNumber (); Undo (True); @@ -3506,7 +3506,7 @@ GotoError (); User = False; drc = False; - if (gui_dialog_confirm(DRC_CONTINUE)) + if (!gui_dialog_confirm(DRC_CONTINUE)) return (True); IncrementUndoSerialNumber (); Undo (True); @@ -3622,7 +3622,7 @@ DrawObject (type, ptr1, ptr2, 0); drcerr_count++; GotoError (); - if (gui_dialog_confirm(DRC_CONTINUE)) + if (!gui_dialog_confirm(DRC_CONTINUE)) { IsBad = True; return 1; @@ -3724,7 +3724,7 @@ drcerr_count++; SetThing (LINE_TYPE, layer, line, line); GotoError (); - if (gui_dialog_confirm(DRC_CONTINUE)) + if (!gui_dialog_confirm(DRC_CONTINUE)) { IsBad = True; break; @@ -3748,7 +3748,7 @@ drcerr_count++; SetThing (ARC_TYPE, layer, arc, arc); GotoError (); - if (gui_dialog_confirm(DRC_CONTINUE)) + if (!gui_dialog_confirm(DRC_CONTINUE)) { IsBad = True; break; @@ -3773,7 +3773,7 @@ drcerr_count++; SetThing (PIN_TYPE, element, pin, pin); GotoError (); - if (gui_dialog_confirm(DRC_CONTINUE)) + if (!gui_dialog_confirm(DRC_CONTINUE)) { IsBad = True; break; @@ -3797,7 +3797,7 @@ drcerr_count++; SetThing (PAD_TYPE, element, pad, pad); GotoError (); - if (gui_dialog_confirm(DRC_CONTINUE)) + if (!gui_dialog_confirm(DRC_CONTINUE)) { IsBad = True; break; @@ -3822,7 +3822,7 @@ drcerr_count++; SetThing (VIA_TYPE, via, via, via); GotoError (); - if (gui_dialog_confirm(DRC_CONTINUE)) + if (!gui_dialog_confirm(DRC_CONTINUE)) { IsBad = True; break; @@ -3854,7 +3854,7 @@ drcerr_count++; SetThing(LINE_TYPE, layer, line, line); GotoError(); - if (gui_dialog_confirm(DRC_CONTINUE)) + if (!gui_dialog_confirm(DRC_CONTINUE)) { IsBad = True; break; @@ -3887,7 +3887,7 @@ drcerr_count++; SetThing(ELEMENT_TYPE, element, element, element); GotoError(); - if (gui_dialog_confirm(DRC_CONTINUE)) + if (!gui_dialog_confirm(DRC_CONTINUE)) { IsBad = True; break; @@ -3973,9 +3973,11 @@ case LINE_TYPE: case ARC_TYPE: case POLYGON_TYPE: - g_message("GotoError: ChangeGroupVisibility (GetLayerNumber"); + ChangeGroupVisibility (GetLayerNumber + (PCB->Data, (LayerTypePtr) thing_ptr1), True, + True); } - CenterDisplay (X, Y, False); + CenterDisplay (X, Y - TO_PCB(Output.Height / 4), False); } void diff -urN pcb.orig/src/gui-utils.c pcb/src/gui-utils.c --- pcb.orig/src/gui-utils.c 2005-03-11 20:17:12.000000000 -0600 +++ pcb/src/gui-utils.c 2005-03-28 23:46:42.001180627 -0600 @@ -642,6 +642,7 @@ { GtkTextIter iter; GtkTextBuffer *buffer; + GtkTextMark *mark; buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view)); gtk_text_buffer_get_end_iter(buffer, &iter); @@ -664,6 +665,11 @@ s + 4, -1, "underline", NULL); else gtk_text_buffer_insert(buffer, &iter, s, -1); + + mark = gtk_text_buffer_create_mark(buffer, NULL, &iter, FALSE); + gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(view), mark, + 0, TRUE, 0.0, 1.0); + gtk_text_buffer_delete_mark(buffer, mark); } void diff -Naur pcb-20050609.orig/src/gui-library-window.c pcb-20050609/src/gui-library-window.c --- pcb-20050609.orig/src/gui-library-window.c 2005-02-27 12:54:16.000000000 -0500 +++ pcb-20050609/src/gui-library-window.c 2005-09-24 14:32:13.000000000 -0400 @@ -322,6 +322,6 @@ | don't want. */ gtk_widget_realize(library_window); - gdk_window_set_accept_focus(library_window->window, FALSE); + // gdk_window_set_accept_focus(library_window->window, FALSE); gtk_widget_show_all(library_window); }