diff --git a/mozilla/cmd/xfe/editor.c b/mozilla/cmd/xfe/editor.c index 0212b5dee5e..2e0d64e2f83 100644 --- a/mozilla/cmd/xfe/editor.c +++ b/mozilla/cmd/xfe/editor.c @@ -6060,6 +6060,12 @@ fe_EditorTableCellSetData(MWContext* context, EDT_TableCellData* p_data) if (cell_data) { COPY_SAVE_EXTRA(cell_data, p_data); DUP_BGCOLOR(cell_data, p_data); +#ifdef DEBUG_akkana + printf("EDT_SetTableCellData: %x %x %x\n", + cell_data->pColorBackground->red, + cell_data->pColorBackground->green, + cell_data->pColorBackground->blue); +#endif EDT_SetTableCellData(context, cell_data); EDT_FreeTableCellData(cell_data); fe_EditorUpdateToolbar(context, 0); diff --git a/mozilla/cmd/xfe/src/ComposeFrame.cpp b/mozilla/cmd/xfe/src/ComposeFrame.cpp index 2625706b851..92e17cf7793 100644 --- a/mozilla/cmd/xfe/src/ComposeFrame.cpp +++ b/mozilla/cmd/xfe/src/ComposeFrame.cpp @@ -1,4 +1,4 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in @@ -528,22 +528,28 @@ fe_showCompose(Widget toplevel, Chrome *chromespec, MWContext *old_context, XP_Bool useHtml; - if (editorType == MSG_HTML_EDITOR) { - useHtml = TRUE; - } - else { - if (editorType == MSG_PLAINTEXT_EDITOR) { - useHtml = FALSE; - } - else { - if (old_context && CONTEXT_DATA(old_context)->stealth_cmd) { - useHtml = !fe_globalPrefs.send_html_msg; - } - else { - useHtml = fe_globalPrefs.send_html_msg; - } - } - } + if (editorType == MSG_HTML_EDITOR) { + useHtml = TRUE; + } + else if (editorType == MSG_PLAINTEXT_EDITOR) { + useHtml = FALSE; + } +#if FORCE_EDITOR_FROM_EDITOR + /* This would probably be a good idea for Publish/Send Page + * if we had Forward Inline, but unfortunately we don't. + */ + else if (old_context && EDT_IS_EDITOR(old_context)) { + useHtml = TRUE; + } +#endif + else { + if (old_context && CONTEXT_DATA(old_context)->stealth_cmd) { + useHtml = !fe_globalPrefs.send_html_msg; + } + else { + useHtml = fe_globalPrefs.send_html_msg; + } + } if (old_context) CONTEXT_DATA(old_context)->stealth_cmd = False; diff --git a/mozilla/cmd/xfe/src/EditTableDialog.cpp b/mozilla/cmd/xfe/src/EditTableDialog.cpp index 8d16c55f33c..438399fef1a 100644 --- a/mozilla/cmd/xfe/src/EditTableDialog.cpp +++ b/mozilla/cmd/xfe/src/EditTableDialog.cpp @@ -101,9 +101,9 @@ extern "C" void fe_EventLoop(); extern "C" { /* some forward definitions: */ -static void fe_bg_group_set(Widget parent, LO_Color* color, +static void fe_bg_group_set(fe_bgGroup* group, LO_Color* color, char* bg_image, XP_Bool leave_image); -static void fe_bg_group_get(Widget parent, LO_Color** color_r, +static void fe_bg_group_get(fe_bgGroup* group, LO_Color** color_r, char** bg_image_r, XP_Bool* leave_image_r); static Widget fe_CreateFolder(Widget parent, char* name, @@ -111,8 +111,9 @@ static Widget fe_CreateFolder(Widget parent, char* name, static void fe_table_tbr_set(MWContext* context, Widget toggle, Widget text, Widget radio, Boolean enabled, unsigned numeric, Boolean second_one); -static Widget fe_create_background_group(Widget parent, char* name, - Arg* p_args, Cardinal p_n); +static void fe_create_background_group(Widget parent, char* name, + Arg* p_args, Cardinal p_n, + fe_bgGroup* group); /* End Forward Definitions */ /* A routine that comes from Mail/News SearchRuleView.cpp, of all places: */ @@ -155,9 +156,45 @@ extern void fe_table_percent_label_set(Widget widget, Boolean nested); /* End editordialogs.c definitions */ }; // end extern "C" +#define TABLE_DIALOG_TAB_TABLE 0 +#define TABLE_DIALOG_TAB_CELL 1 + +/* + * Extern routine called from EditorView.cpp + */ +void +fe_EditorTableCreateDialogDo(MWContext* context) +{ + XFE_EditTableDialog* dialog + = new XFE_EditTableDialog(CONTEXT_WIDGET(context), "tableCreateDialog", + context, TRUE, TABLE_DIALOG_TAB_TABLE); + dialog->post(); +} + +/* + * Extern routine called from editordialogs.c and EditorView.cpp + */ +void +fe_EditorTablePropertiesDialogDo(MWContext* context, + fe_EditorPropertiesDialogType type) +{ + unsigned tab_number; + + if (type == XFE_EDITOR_PROPERTIES_TABLE_CELL) + tab_number = TABLE_DIALOG_TAB_CELL; + else + tab_number = TABLE_DIALOG_TAB_TABLE; + + XFE_EditTableDialog* dialog = + new XFE_EditTableDialog(CONTEXT_WIDGET(context), + "tablePropertiesDialog", + context, FALSE, tab_number); + dialog->post(); +} + XFE_EditTableDialog::XFE_EditTableDialog(Widget parent, char *name, MWContext* context, - fe_EditorTablesTableStruct* table, + Boolean createIt, int tab_number) : XFE_Dialog(parent, name, @@ -175,7 +212,15 @@ XFE_EditTableDialog::XFE_EditTableDialog(Widget parent, char *name, Widget tab_form; m_context = context; - m_table = table; + /* If we're creating, insert a new minimal table */ + if (m_newTable = createIt) + { + EDT_TableData* tableData = EDT_NewTableData(); + tableData->iRows = tableData->iColumns = 1; + tableData->bBorderWidthDefined = True; + tableData->iBorderWidth = 1; + EDT_InsertTable(context, tableData); + } n = 0; folder = fe_CreateFolder(m_chrome, "folder", args, n); @@ -239,33 +284,39 @@ XFE_EditTableDialog::cancel() { m_doneWithLoop = True; + // If the table is new, we need to delete the one that was created; + // if it was already there, then don't do anything. + if (m_newTable) + { + EDT_DeleteTable(m_context); + } + hide(); } void -XFE_EditTableDialog::table_toggle_cb(Widget widget, - XtPointer, XtPointer closure) +XFE_EditTableDialog::table_toggle_cb(Widget widget, XtPointer cd, XtPointer) { - fe_EditorTablesTableStruct* w_data = (fe_EditorTablesTableStruct*)closure; + XFE_EditTableDialog* edt = (XFE_EditTableDialog*)cd; Boolean enabled = XmToggleButtonGetState(widget); MWContext* context = fe_WidgetToMWContext(widget); Widget text = NULL; /* keep -O happy */ Widget radio = NULL; /* keep -O happy */ - if (widget == w_data->line_width_toggle) { - text = w_data->line_width_text; + if (widget == edt->m_table.line_width_toggle) { + text = edt->m_table.line_width_text; radio = NULL; - } else if (widget == w_data->width_toggle) { - text = w_data->width_text; - radio = w_data->width_units; - } else if (widget == w_data->height_toggle) { - text = w_data->height_text; - radio = w_data->height_units; - } else if (widget == w_data->caption_toggle) { - fe_SimpleRadioGroupSetSensitive(w_data->caption_type, enabled); + } else if (widget == edt->m_table.width_toggle) { + text = edt->m_table.width_text; + radio = edt->m_table.width_units; + } else if (widget == edt->m_table.height_toggle) { + text = edt->m_table.height_text; + radio = edt->m_table.height_units; + } else if (widget == edt->m_table.caption_toggle) { + fe_SimpleRadioGroupSetSensitive(edt->m_table.caption_type, enabled); return; } - + if (text != NULL) fe_TextFieldSetEditable(context, text, enabled); if (radio != NULL) @@ -358,50 +409,6 @@ XFE_EditTableDialog::cancel_cb(Widget, XtPointer clientData, XtPointer) obj->cancel(); } -void -fe_EditorTableCreateDialogDo(MWContext* context) -{ - /* create a new minimal table, insert it and select it */ - EDT_TableData* tableData = EDT_NewTableData(); - tableData->iRows = tableData->iColumns = 1; - tableData->bBorderWidthDefined = True; - tableData->iBorderWidth = 1; - EDT_InsertTable(context, tableData); - - fe_EditorTablesTableStruct table; - XFE_EditTableDialog* dialog - = new XFE_EditTableDialog(CONTEXT_WIDGET(context), "tableCreateDialog", - context, &table); - dialog->post(); - - EDT_FreeTableData(tableData); -} - -#define TABLE_DIALOG_TAB_TABLE 0 -#define TABLE_DIALOG_TAB_CELL 1 - -/* - * This is the extern routine that editordialogs.c calls. - */ -void -fe_EditorTablePropertiesDialogDo(MWContext* context, - fe_EditorPropertiesDialogType type) -{ - fe_EditorTablesTableStruct table; - unsigned tab_number; - - if (type == XFE_EDITOR_PROPERTIES_TABLE_CELL) - tab_number = TABLE_DIALOG_TAB_CELL; - else - tab_number = TABLE_DIALOG_TAB_TABLE; - - XFE_EditTableDialog* dialog = - new XFE_EditTableDialog(CONTEXT_WIDGET(context), - "tablePropertiesDialog", - context, &table, tab_number); - dialog->post(); -} - static ED_Alignment fe_index_to_ED_Alignment(unsigned index, Boolean horizontal) { @@ -510,7 +517,6 @@ XFE_EditTableDialog::cellPropertiesCreate(Widget parent) Widget height_toggle; Widget height_text; Widget height_units; - Widget bg_group; Widget w; Widget prevnext_form; Arg args[16]; @@ -727,8 +733,8 @@ XFE_EditTableDialog::cellPropertiesCreate(Widget parent) XtSetArg(args[n], XmNtopWidget, height_text); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; - bg_group = fe_create_background_group(form, "background", args, n); - XtManageChild(bg_group); + fe_create_background_group(form, "background", args, n, + &(m_cell.bg_group)); m_cell.number_rows_text = rows_text; m_cell.number_columns_text = columns_text; @@ -742,7 +748,6 @@ XFE_EditTableDialog::cellPropertiesCreate(Widget parent) m_cell.height_toggle = height_toggle; m_cell.height_text = height_text; m_cell.height_units = height_units; - m_cell.bg_group = bg_group; m_cell.option_menu = option_menu; return form; @@ -805,7 +810,7 @@ XFE_EditTableDialog::cellPropertiesInit() /* * Background stuff */ - fe_bg_group_set(m_cell.bg_group, + fe_bg_group_set(&(m_cell.bg_group), cell_data->pColorBackground, cell_data->pBackgroundImage, cell_data->bBackgroundNoSave); @@ -908,11 +913,16 @@ XFE_EditTableDialog::cellPropertiesSet() /* * Background stuff */ - fe_bg_group_get(m_cell.bg_group, + fe_bg_group_get(&(m_cell.bg_group), &cell_data.pColorBackground, &cell_data.pBackgroundImage, &cell_data.bBackgroundNoSave); +#ifdef DEBUG_akkana + printf("Setting color: %x %x %x\n", cell_data.pColorBackground->red, + cell_data.pColorBackground->green, + cell_data.pColorBackground->blue); +#endif fe_EditorTableCellSetData(m_context, &cell_data); if (cell_data.pColorBackground) @@ -947,7 +957,6 @@ XFE_EditTableDialog::tablePropertiesCreate(Widget parent) Widget caption_type; Widget alignframe; Widget alignBox; - Widget bg_group; Widget w; Arg args[16]; Cardinal n; @@ -979,8 +988,8 @@ XFE_EditTableDialog::tablePropertiesCreate(Widget parent) XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftWidget, w); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++; - m_table->number_rows_text = XmCreateTextField(form, "numRows", args, n); - XtManageChild(m_table->number_rows_text); + m_table.number_rows_text = XmCreateTextField(form, "numRows", args, n); + XtManageChild(m_table.number_rows_text); n = 0; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; @@ -994,9 +1003,9 @@ XFE_EditTableDialog::tablePropertiesCreate(Widget parent) XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNleftWidget, w); n++; - m_table->number_columns_text = XmCreateTextField(form, "numColumns", + m_table.number_columns_text = XmCreateTextField(form, "numColumns", args, n); - XtManageChild(m_table->number_columns_text); + XtManageChild(m_table.number_columns_text); /* * Alignment frame. @@ -1173,7 +1182,7 @@ XFE_EditTableDialog::tablePropertiesCreate(Widget parent) args, n); XtManageChild(height_toggle); XtAddCallback(height_toggle, XmNvalueChangedCallback, - table_toggle_cb, (XtPointer)m_table); + table_toggle_cb, (XtPointer)this); n = 0; XtSetArg(args[n], XmNcolumns, 4); n++; @@ -1215,26 +1224,22 @@ XFE_EditTableDialog::tablePropertiesCreate(Widget parent) XtSetArg(args[n], XmNtopWidget, frame); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; - bg_group = fe_create_background_group(parent, "background", args, n); - XtManageChild(bg_group); + fe_create_background_group(parent, "background", args, n, + &(m_table.bg_group)); - if (m_table) - { - m_table->line_width_toggle = line_width_toggle; - m_table->line_width_text = line_width_text; - m_table->spacing_text = spacing_text; - m_table->padding_text = padding_text; - m_table->width_toggle = width_toggle; - m_table->width_text = width_text; - m_table->width_units = width_units; - m_table->height_toggle = height_toggle; - m_table->height_text = height_text; - m_table->height_units = height_units; - m_table->caption_toggle = caption_toggle; - m_table->caption_type = caption_type; - m_table->alignBox = alignBox; - m_table->bg_group = bg_group; - } + m_table.line_width_toggle = line_width_toggle; + m_table.line_width_text = line_width_text; + m_table.spacing_text = spacing_text; + m_table.padding_text = padding_text; + m_table.width_toggle = width_toggle; + m_table.width_text = width_text; + m_table.width_units = width_units; + m_table.height_toggle = height_toggle; + m_table.height_text = height_text; + m_table.height_units = height_units; + m_table.caption_toggle = caption_toggle; + m_table.caption_type = caption_type; + m_table.alignBox = alignBox; return alignframe; } @@ -1252,57 +1257,57 @@ XFE_EditTableDialog::tablePropertiesInit() return; /* Set the number of rows and columns */ - if (m_table->number_rows_text != 0) + if (m_table.number_rows_text != 0) { - fe_set_numeric_text_field(m_table->number_rows_text, + fe_set_numeric_text_field(m_table.number_rows_text, table_data.td.iRows); - if (m_table->number_rows_text != NULL) /* inserting */ + if (m_table.number_rows_text != NULL) /* inserting */ is_nested = EDT_IsInsertPointInTable(m_context); else is_nested = EDT_IsInsertPointInNestedTable(m_context); } - if (m_table->number_columns_text != 0) - fe_set_numeric_text_field(m_table->number_columns_text, + if (m_table.number_columns_text != 0) + fe_set_numeric_text_field(m_table.number_columns_text, table_data.td.iColumns); /* set the border width parts */ - fe_table_tbr_set(m_context, m_table->line_width_toggle, - m_table->line_width_text, NULL, + fe_table_tbr_set(m_context, m_table.line_width_toggle, + m_table.line_width_text, NULL, table_data.td.bBorderWidthDefined, table_data.td.iBorderWidth, 0); - fe_set_numeric_text_field(m_table->spacing_text, + fe_set_numeric_text_field(m_table.spacing_text, table_data.td.iCellSpacing); - fe_set_numeric_text_field(m_table->padding_text, + fe_set_numeric_text_field(m_table.padding_text, table_data.td.iCellPadding); - fe_table_tbr_set(m_context, m_table->width_toggle, - m_table->width_text, m_table->width_units, + fe_table_tbr_set(m_context, m_table.width_toggle, + m_table.width_text, m_table.width_units, table_data.td.bWidthDefined, table_data.td.iWidth, (table_data.td.bWidthPercent)); - widget = fe_SimpleRadioGroupGetChild(m_table->width_units, 1); + widget = fe_SimpleRadioGroupGetChild(m_table.width_units, 1); fe_table_percent_label_set(widget, is_nested); - fe_table_tbr_set(m_context, m_table->height_toggle, - m_table->height_text, m_table->height_units, + fe_table_tbr_set(m_context, m_table.height_toggle, + m_table.height_text, m_table.height_units, table_data.td.bHeightDefined, table_data.td.iHeight, (table_data.td.bHeightPercent)); - widget = fe_SimpleRadioGroupGetChild(m_table->height_units, 1); + widget = fe_SimpleRadioGroupGetChild(m_table.height_units, 1); fe_table_percent_label_set(widget, is_nested); /* * Background stuff */ - fe_bg_group_set(m_table->bg_group, + fe_bg_group_set(&(m_table.bg_group), table_data.td.pColorBackground, table_data.td.pBackgroundImage, table_data.td.bBackgroundNoSave); - fe_table_tbr_set(m_context, m_table->caption_toggle, - NULL, m_table->caption_type, + fe_table_tbr_set(m_context, m_table.caption_toggle, + NULL, m_table.caption_type, table_data.has_caption, 0, (table_data.cd.align != ED_ALIGN_ABSTOP)); @@ -1310,7 +1315,7 @@ XFE_EditTableDialog::tablePropertiesInit() /* we don't have default for alignment yet, so we need to subtract one * from index */ - fe_SimpleRadioGroupSetWhich(m_table->alignBox, + fe_SimpleRadioGroupSetWhich(m_table.alignBox, fe_ED_Alignment_to_index(table_data.td.align)-1); } @@ -1326,35 +1331,35 @@ XFE_EditTableDialog::tablePropertiesCommonSet(EDT_AllTableData* table_data) table_data->td.malign = ED_ALIGN_DEFAULT; table_data->td.iRows = - fe_get_numeric_text_field(m_table->number_rows_text); + fe_get_numeric_text_field(m_table.number_rows_text); table_data->td.iColumns = - fe_get_numeric_text_field(m_table->number_columns_text); + fe_get_numeric_text_field(m_table.number_columns_text); table_data->td.bBorderWidthDefined = - XmToggleButtonGetState(m_table->line_width_toggle); + XmToggleButtonGetState(m_table.line_width_toggle); table_data->td.iBorderWidth = - fe_get_numeric_text_field(m_table->line_width_text); + fe_get_numeric_text_field(m_table.line_width_text); table_data->td.iCellSpacing = - fe_get_numeric_text_field(m_table->spacing_text); + fe_get_numeric_text_field(m_table.spacing_text); table_data->td.iCellPadding = - fe_get_numeric_text_field(m_table->padding_text); + fe_get_numeric_text_field(m_table.padding_text); table_data->td.bWidthDefined = - XmToggleButtonGetState(m_table->width_toggle); + XmToggleButtonGetState(m_table.width_toggle); table_data->td.iWidth = - fe_get_numeric_text_field(m_table->width_text); + fe_get_numeric_text_field(m_table.width_text); table_data->td.bWidthPercent = - (fe_SimpleRadioGroupGetWhich(m_table->width_units) == 1); + (fe_SimpleRadioGroupGetWhich(m_table.width_units) == 1); table_data->td.bHeightDefined = - XmToggleButtonGetState(m_table->height_toggle); + XmToggleButtonGetState(m_table.height_toggle); table_data->td.iHeight = - fe_get_numeric_text_field(m_table->height_text); + fe_get_numeric_text_field(m_table.height_text); table_data->td.bHeightPercent = - (fe_SimpleRadioGroupGetWhich(m_table->height_units) == 1); + (fe_SimpleRadioGroupGetWhich(m_table.height_units) == 1); - alignment = fe_SimpleRadioGroupGetWhich(m_table->alignBox); + alignment = fe_SimpleRadioGroupGetWhich(m_table.alignBox); switch(alignment) { case 0: @@ -1376,9 +1381,9 @@ XFE_EditTableDialog::tablePropertiesCommonSet(EDT_AllTableData* table_data) * validated, and we don't want to bother when we validate. */ - table_data->has_caption = XmToggleButtonGetState(m_table->caption_toggle); + table_data->has_caption = XmToggleButtonGetState(m_table.caption_toggle); - if (fe_SimpleRadioGroupGetWhich(m_table->caption_type) == 1) + if (fe_SimpleRadioGroupGetWhich(m_table.caption_type) == 1) table_data->cd.align = ED_ALIGN_ABSBOTTOM; else table_data->cd.align = ED_ALIGN_ABSTOP; @@ -1399,7 +1404,7 @@ XFE_EditTableDialog::tablePropertiesSet() tablePropertiesCommonSet(&table_data); /* Get the background stuff, because ..common_set() did not. */ - fe_bg_group_get(m_table->bg_group, + fe_bg_group_get(&(m_table.bg_group), &table_data.td.pColorBackground, &table_data.td.pBackgroundImage, &table_data.td.bBackgroundNoSave); @@ -1428,10 +1433,10 @@ XFE_EditTableDialog::tablePropertiesValidate() tablePropertiesCommonSet(&table_data); - if (m_table->number_rows_text != NULL) { - t->iRows = fe_get_numeric_text_field(m_table->number_rows_text); + if (m_table.number_rows_text != NULL) { + t->iRows = fe_get_numeric_text_field(m_table.number_rows_text); t->iColumns = - fe_get_numeric_text_field(m_table->number_columns_text); + fe_get_numeric_text_field(m_table.number_columns_text); if (RANGE_CHECK(t->iRows, TABLE_MIN_ROWS, TABLE_MAX_ROWS)) errors[nerrors++] = XFE_INVALID_TABLE_NROWS; @@ -1475,7 +1480,7 @@ XFE_EditTableDialog::tablePropertiesValidate() EDT_FreeTableData(tmp); if (nerrors > 0) { - fe_editor_range_error_dialog(m_context, m_table->spacing_text, + fe_editor_range_error_dialog(m_context, m_table.spacing_text, errors, nerrors); return FALSE; } @@ -1483,24 +1488,14 @@ XFE_EditTableDialog::tablePropertiesValidate() return TRUE; } -#define BG_GROUP_USECOLOR_TOGGLE "useColor" -#define BG_GROUP_USECOLOR_SWATCH "useColorSwatch" -#define BG_GROUP_USEIMAGE_TOGGLE "useImage" -#define BG_GROUP_USEIMAGE_TEXT "useImageText" -#define BG_GROUP_LEAVEIMAGE_TOGGLE "leaveImage" - -static Widget +static void fe_create_background_group(Widget parent, char* name, - Arg* p_args, Cardinal p_n) + Arg* p_args, Cardinal p_n, + fe_bgGroup* bgGroup) { Widget frame; Widget form; - Widget use_color_toggle; - Widget use_color_swatch; - Widget use_image_toggle; - Widget use_image_text; Widget use_image_chooser; - Widget leave_image_toggle; Arg args[16]; Cardinal n; Dimension height; @@ -1514,90 +1509,78 @@ fe_create_background_group(Widget parent, char* name, n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; - use_color_toggle = XmCreateToggleButtonGadget(form, - BG_GROUP_USECOLOR_TOGGLE, - args, n); - XtManageChild(use_color_toggle); + bgGroup->useColorToggle = XmCreateToggleButtonGadget(form, "useColor", + args, n); + XtManageChild(bgGroup->useColorToggle); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; - XtSetArg(args[n], XmNtopWidget, use_color_toggle); n++; + XtSetArg(args[n], XmNtopWidget, bgGroup->useColorToggle); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; - use_image_toggle = XmCreateToggleButtonGadget(form, - BG_GROUP_USEIMAGE_TOGGLE, - args, n); - XtManageChild(use_image_toggle); + bgGroup->useImageToggle = XmCreateToggleButtonGadget(form, "useImage", + args, n); + XtManageChild(bgGroup->useImageToggle); - XtVaGetValues(use_color_toggle, XmNheight, &height, 0); + XtVaGetValues(bgGroup->useColorToggle, XmNheight, &height, 0); n = 0; XtSetArg(args[n], XmNheight, height); n++; XtSetArg(args[n], XmNwidth, SWATCH_SIZE); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; - XtSetArg(args[n], XmNleftWidget, use_color_toggle); n++; - use_color_swatch = fe_CreateSwatchButton(form, BG_GROUP_USECOLOR_SWATCH, - args, n); - XtManageChild(use_color_swatch); + XtSetArg(args[n], XmNleftWidget, bgGroup->useColorToggle); n++; + bgGroup->useColorSwatch = fe_CreateSwatchButton(form, "useColorSwatch", + args, n); + XtManageChild(bgGroup->useColorSwatch); - XtAddCallback(use_color_toggle, XmNvalueChangedCallback, - fe_bg_group_use_color_cb, use_color_swatch); - XtAddCallback(use_color_swatch, XmNactivateCallback, - fe_bg_group_swatch_cb, use_color_toggle); + XtAddCallback(bgGroup->useColorToggle, XmNvalueChangedCallback, + fe_bg_group_use_color_cb, bgGroup->useColorSwatch); + XtAddCallback(bgGroup->useColorSwatch, XmNactivateCallback, + fe_bg_group_swatch_cb, bgGroup->useColorToggle); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; - XtSetArg(args[n], XmNtopWidget, use_color_toggle); n++; + XtSetArg(args[n], XmNtopWidget, bgGroup->useColorToggle); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_WIDGET); n++; - XtSetArg(args[n], XmNleftWidget, use_image_toggle); n++; + XtSetArg(args[n], XmNleftWidget, bgGroup->useImageToggle); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; - use_image_text = fe_CreateTextField(form, - BG_GROUP_USEIMAGE_TEXT, args, n); - XtManageChild(use_image_text); + bgGroup->useImageText = fe_CreateTextField(form, "useImageText", args, n); + XtManageChild(bgGroup->useImageText); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; - XtSetArg(args[n], XmNtopWidget, use_image_text); n++; + XtSetArg(args[n], XmNtopWidget, bgGroup->useImageText); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++; use_image_chooser = XmCreatePushButtonGadget(form, "chooseImage", args, n); XtManageChild(use_image_chooser); - XtAddCallback(use_image_toggle, XmNvalueChangedCallback, - fe_bg_use_image_cb, use_image_text); + XtAddCallback(bgGroup->useImageToggle, XmNvalueChangedCallback, + fe_bg_use_image_cb, bgGroup->useImageText); XtAddCallback(use_image_chooser, XmNactivateCallback, - fe_bg_image_browse_cb, use_image_text); + fe_bg_image_browse_cb, bgGroup->useImageText); n = 0; XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++; - XtSetArg(args[n], XmNtopWidget, use_image_text); n++; + XtSetArg(args[n], XmNtopWidget, bgGroup->useImageText); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); n++; XtSetArg(args[n], XmNrightWidget, use_image_chooser); n++; - leave_image_toggle = XmCreateToggleButtonGadget(form, - BG_GROUP_LEAVEIMAGE_TOGGLE, - args, n); - XtManageChild(leave_image_toggle); - - return frame; + bgGroup->leaveImageToggle = XmCreateToggleButtonGadget(form, "leaveImage", + args, n); + XtManageChild(bgGroup->leaveImageToggle); } static void -fe_bg_group_set(Widget parent, +fe_bg_group_set(fe_bgGroup* group, LO_Color* color, char* bg_image, XP_Bool /*leave_image*/) { - Widget use_color_toggle; - Widget use_color_swatch; - Widget use_image_toggle; - Widget use_image_text; - Widget leave_image_toggle; + Widget use_color_toggle = group->useColorToggle; + Widget use_color_swatch = group->useColorSwatch; + Widget use_image_toggle = group->useImageToggle; + Widget use_image_text = group->useImageText; + Widget leave_image_toggle = group->leaveImageToggle; - use_color_toggle = XtNameToWidget(parent, "*" BG_GROUP_USECOLOR_TOGGLE); - use_color_swatch = XtNameToWidget(parent, "*" BG_GROUP_USECOLOR_SWATCH); - use_image_toggle = XtNameToWidget(parent, "*" BG_GROUP_USEIMAGE_TOGGLE); - use_image_text = XtNameToWidget(parent, "*" BG_GROUP_USEIMAGE_TEXT); - leave_image_toggle = XtNameToWidget(parent,"*" BG_GROUP_LEAVEIMAGE_TOGGLE); - if (use_color_toggle != NULL) XmToggleButtonGadgetSetState(use_color_toggle, (color != NULL), FALSE); @@ -1621,23 +1604,22 @@ fe_bg_group_set(Widget parent, } static void -fe_bg_group_get(Widget parent, +fe_bg_group_get(fe_bgGroup* group, LO_Color** color_r, char** bg_image_r, XP_Bool* leave_image_r) { XP_Bool use_color = FALSE; XP_Bool use_image = FALSE; XP_Bool leave_image = FALSE; - Widget use_color_toggle; - Widget use_color_swatch; - Widget use_image_toggle; - Widget use_image_text; - Widget leave_image_toggle; - - use_color_toggle = XtNameToWidget(parent, "*" BG_GROUP_USECOLOR_TOGGLE); - use_color_swatch = XtNameToWidget(parent, "*" BG_GROUP_USECOLOR_SWATCH); - use_image_toggle = XtNameToWidget(parent, "*" BG_GROUP_USEIMAGE_TOGGLE); - use_image_text = XtNameToWidget(parent, "*" BG_GROUP_USEIMAGE_TEXT); - leave_image_toggle = XtNameToWidget(parent,"*" BG_GROUP_LEAVEIMAGE_TOGGLE); + + XP_ASSERT(group); + if (group == 0) + return; + + Widget use_color_toggle = group->useColorToggle; + Widget use_color_swatch = group->useColorSwatch; + Widget use_image_toggle = group->useImageToggle; + Widget use_image_text = group->useImageText; + Widget leave_image_toggle = group->leaveImageToggle; if (use_color_toggle != NULL) use_color = (XP_Bool)XmToggleButtonGadgetGetState(use_color_toggle); diff --git a/mozilla/cmd/xfe/src/EditTableDialog.h b/mozilla/cmd/xfe/src/EditTableDialog.h index 410d38f5890..80a1fa9cff2 100644 --- a/mozilla/cmd/xfe/src/EditTableDialog.h +++ b/mozilla/cmd/xfe/src/EditTableDialog.h @@ -33,6 +33,15 @@ class XFE_Frame; class EDT_AllTableData; +typedef struct fe_bgGroupStruct +{ + Widget useColorToggle; + Widget useColorSwatch; + Widget useImageToggle; + Widget useImageText; + Widget leaveImageToggle; +} fe_bgGroup; + // // I don't think we really need to save all these variables. // 2DO: clean out the ones we don't need to save. @@ -51,7 +60,7 @@ typedef struct fe_EditorTablesTableStruct Widget height_toggle; Widget height_text; Widget height_units; - Widget bg_group; + fe_bgGroup bg_group; Widget choose_color; LO_Color color_value; Widget caption_toggle; @@ -83,7 +92,8 @@ typedef struct fe_EditorTablesCellStruct Widget height_toggle; Widget height_text; Widget height_units; - Widget bg_group; + fe_bgGroup bg_group; + Widget use_color_toggle; LO_Color color_value; Widget option_menu; } fe_EditorTablesCellStruct; @@ -92,8 +102,7 @@ class XFE_EditTableDialog: public XFE_Dialog { public: XFE_EditTableDialog(Widget parent, char* name, MWContext* context, - fe_EditorTablesTableStruct* tblData, - int tab_number = 0); + Boolean createIt, int tab_number = 0); virtual ~XFE_EditTableDialog(); @@ -103,9 +112,11 @@ private: MWContext* m_context; XP_Bool m_doneWithLoop; - fe_EditorTablesTableStruct* m_table; + fe_EditorTablesTableStruct m_table; fe_EditorTablesCellStruct m_cell; + Boolean m_newTable; + void ok(); void cancel(); void changeSelection(Boolean); diff --git a/mozilla/cmd/xfe/src/EditorFrame.cpp b/mozilla/cmd/xfe/src/EditorFrame.cpp index aa78e4342ba..ed7f8e21e6e 100644 --- a/mozilla/cmd/xfe/src/EditorFrame.cpp +++ b/mozilla/cmd/xfe/src/EditorFrame.cpp @@ -145,7 +145,7 @@ MenuSpec XFE_EditorFrame::edit_menu_spec[] = { MENU_SEPARATOR, { xfeCmdFindInObject, PUSHBUTTON }, { xfeCmdFindAgain, PUSHBUTTON }, - { xfeCmdSearchAddress, PUSHBUTTON }, +// { xfeCmdSearchAddress, PUSHBUTTON }, MENU_SEPARATOR, { xfeCmdEditPageSource,PUSHBUTTON }, MENU_SEPARATOR, @@ -637,7 +637,7 @@ fe_EditorNewPopupMenu(XFE_Frame* frame, Widget parent, MWContext *context) */ if (EDT_GetHREF(context)) { popup->addMenuSpec(fe_editor_link_popups); - } else { + } else if (e_type != ED_ELEMENT_HRULE) { popup->addMenuSpec(fe_editor_insert_link_popups); } @@ -718,6 +718,10 @@ fe_editor_create_plugin_menu(MenuSpec* static_spec) category_index++; } + // Add the "Stop Active Plugin" item: + menu_spec[nstatics+category_index].menuItemName = xfeCmdStopActivePlugin; + menu_spec[nstatics+category_index].tag = PUSHBUTTON; + category_index++; menu_spec[nstatics+category_index].menuItemName = NULL; // delimit paranoia @@ -910,7 +914,32 @@ XFE_EditorFrame::isCommandSelected(CommandType cmd, TRACE(("XFE_EditorFrame::isCommandSelected(%s,0x%x)\n", Command::getString(cmd), calldata)); - return XFE_Frame::isCommandSelected(cmd, calldata, info); + if (cmd == xfeCmdSetAlignmentStyleLeft + || cmd == xfeCmdSetAlignmentStyleCenter + || cmd == xfeCmdSetAlignmentStyleRight) + { + EDT_TableData* td = EDT_GetTableData(getContext()); + if (td == 0) + return FALSE; + switch (td->align) + { + case ED_ALIGN_LEFT: + return (cmd == xfeCmdSetAlignmentStyleLeft); + case ED_ALIGN_RIGHT: + return (cmd == xfeCmdSetAlignmentStyleRight); + case ED_ALIGN_ABSCENTER: + default: + return (cmd == xfeCmdSetAlignmentStyleCenter); + } + } + + else if (cmd == xfeCmdSetAlignmentStyleCenter) + { + printf("Checking for center alignment\n"); + return (EDT_GetParagraphAlign(getContext()) == ED_ALIGN_CENTER); + } + + return XFE_Frame::isCommandSelected(cmd, calldata, info); } void diff --git a/mozilla/cmd/xfe/src/EditorView.cpp b/mozilla/cmd/xfe/src/EditorView.cpp index ebd5063e1f1..a1f6aedb1e7 100644 --- a/mozilla/cmd/xfe/src/EditorView.cpp +++ b/mozilla/cmd/xfe/src/EditorView.cpp @@ -36,7 +36,12 @@ #include "pk11func.h" #endif -extern "C" int XFE_EDITOR_NEWTABLE_COLS; +extern "C" { +int XFE_EDITOR_NEWTABLE_COLS; +#if defined(MOZ_MAIL_NEWS) || defined(MOZ_MAIL_COMPOSE) +void fe_mailto_cb(Widget , XtPointer, XtPointer); +#endif +} #define FE_SYNTAX_ERROR() doSyntaxErrorAlert(view, info) @@ -258,19 +263,18 @@ public: }; }; -#ifdef MOZ_MAIL_NEWS +#if defined(MOZ_MAIL_NEWS) || defined(MOZ_MAIL_COMPOSE) class SendPageCommand : public AlwaysEnabledCommand { public: SendPageCommand(XFE_EditorView *v) : AlwaysEnabledCommand(xfeCmdSendPage, v) {}; void reallyDoCommand(XFE_View* view, XFE_CommandInfo*) { - void fe_mailto_cb(Widget , XtPointer, XtPointer); fe_mailto_cb(CONTEXT_WIDGET (view->getContext()), (XtPointer) view->getContext(), NULL); }; }; -#endif /* MOZ_MAIL_NEWS */ +#endif /* MOZ_MAIL_NEWS || MOZ_MAIL_COMPOSE */ class DeleteTableCommand : public XFE_EditorViewCommand { @@ -2882,15 +2886,16 @@ XFE_EditorView::XFE_EditorView(XFE_Component *toplevel_component, registerCommand(m_commands, new SaveCommand(ev)); registerCommand(m_commands, new SaveAsCommand(ev)); registerCommand(m_commands, new PublishCommand(ev)); -#ifdef MOZ_MAIL_NEWS +#if defined(MOZ_MAIL_NEWS) || defined(MOZ_MAIL_COMPOSE) registerCommand(m_commands, new SendPageCommand(ev)); -#endif /* MOZ_MAIL_NEWS */ +#endif /* MOZ_MAIL_NEWS || MOZ_MAIL_COMPOSE */ registerCommand(m_commands, new DeleteTableCommand(ev)); registerCommand(m_commands, new DeleteTableCellCommand(ev)); registerCommand(m_commands, new DeleteTableRowCommand(ev)); registerCommand(m_commands, new DeleteTableColumnCommand(ev)); registerCommand(m_commands, new SelectTableCommand(ev)); registerCommand(m_commands, new SelectTableCellCommand(ev)); + registerCommand(m_commands, new SelectTableAllCellsCommand(ev)); registerCommand(m_commands, new SelectTableRowCommand(ev)); registerCommand(m_commands, new SelectTableColumnCommand(ev)); registerCommand(m_commands, new TableJoinCommand(ev)); diff --git a/mozilla/cmd/xfe/src/SpellHandler.cpp b/mozilla/cmd/xfe/src/SpellHandler.cpp index 62d21bb5327..9b8b0502eed 100644 --- a/mozilla/cmd/xfe/src/SpellHandler.cpp +++ b/mozilla/cmd/xfe/src/SpellHandler.cpp @@ -225,10 +225,12 @@ xfe_spell_destroy_cb (Widget , XtPointer , XtPointer ) /*static*/ PRLibrary* XFE_SpellHandler::m_spellCheckerLib = NULL; /*static*/ XP_Bool XFE_SpellHandler::m_triedToLoad = FALSE; -XFE_SpellHandler::XFE_SpellHandler(MWContext* ) +XFE_SpellHandler::XFE_SpellHandler(MWContext* context) { int i = 0; + m_context = context; + m_triedToLoad = FALSE; m_active = FALSE; @@ -337,6 +339,7 @@ XFE_SpellHandler::initSpellChecker() #ifdef DEBUG_akkana printf("Couldn't find library NSSpellChecker\n"); #endif + FE_Alert(m_context, XP_GetString(NO_SPELL_SHLIB_FOUND)); m_active = 0; return; } diff --git a/mozilla/cmd/xfe/src/SpellHandler.h b/mozilla/cmd/xfe/src/SpellHandler.h index 7f5dafe887b..3e02afe7873 100644 --- a/mozilla/cmd/xfe/src/SpellHandler.h +++ b/mozilla/cmd/xfe/src/SpellHandler.h @@ -178,6 +178,7 @@ private: static PRLibrary* m_spellCheckerLib; static XP_Bool m_triedToLoad; + MWContext* m_context; XP_Bool m_active; xfe_spell_data m_data; xfe_spell_tag m_tags[XSP_CACHE_SIZE]; diff --git a/mozilla/cmd/xfe/src/xfe_commands b/mozilla/cmd/xfe/src/xfe_commands index 42c266ea2a7..1c23b661d68 100644 --- a/mozilla/cmd/xfe/src/xfe_commands +++ b/mozilla/cmd/xfe/src/xfe_commands @@ -562,3 +562,5 @@ xfeCmdChangeRDFView changeRDFView # URL bar xfeCmdClearUrlBar clearUrlBar +# Stop Active Plugins in the editor frame +xfeCmdStopActivePlugin stopActivePlugin diff --git a/mozilla/cmd/xfe/xeditor.h b/mozilla/cmd/xfe/xeditor.h index db94d64b499..896cae01c80 100644 --- a/mozilla/cmd/xfe/xeditor.h +++ b/mozilla/cmd/xfe/xeditor.h @@ -21,7 +21,7 @@ * Should only be include by files that work with the editor. * Created: David Williams , Mar-12-1996 * - * RCSID: "$Id: xeditor.h,v 3.1 1998-03-28 03:20:28 ltabb Exp $" + * RCSID: "$Id: xeditor.h,v 3.2 1998-09-28 19:09:17 akkana%netscape.com Exp $" */ @@ -388,11 +388,8 @@ void fe_EditorTableCellSetData(MWContext*, EDT_TableCellData*); void fe_EditorDisplayTablesSet(MWContext* context, Boolean display); Boolean fe_EditorDisplayTablesGet(MWContext* context); -/* - * Tables dialogs. - */ -void fe_EditorTableCreateDialogDo(MWContext*); -void fe_EditorTablePropertiesDialogDo(MWContext*, fe_EditorPropertiesDialogType); +void fe_EditorTablePropertiesDialogDo(MWContext*, fe_EditorPropertiesDialogType); +void fe_EditorTableCreateDialogDo(MWContext*); Boolean fe_EditorCheckUnsaved(MWContext* context); void fe_EditorDisplaySource(MWContext* context); diff --git a/mozilla/cmd/xfe/xfe_err.h b/mozilla/cmd/xfe/xfe_err.h index 0de76a5e0e2..341cde3fe8e 100644 --- a/mozilla/cmd/xfe/xfe_err.h +++ b/mozilla/cmd/xfe/xfe_err.h @@ -1527,7 +1527,10 @@ ResDef(XFE_ABDIR_USE_PASSWD, XFE_ERR_OFFSET + 611, "Login with name and password") ResDef(NO_SPELL_SHLIB_FOUND, XFE_ERR_OFFSET + 612, - "No spellchk library found") + "No spellchk library found -- spell checking disabled.\n\ +To avoid seeing this dialog in the future, add the line\n\ +'user_pref(\"editor.disable_spell_checker\", true);'\n\ +to your $HOME/.netscape/preferences.js file.") ResDef(XFE_CHOOSE_FOLDER_INSTRUCT, XFE_ERR_OFFSET + 613, "Choose where you would like your %s messages to be stored:")