diff --git a/src/mred/wxme/wx_mbuf.cxx b/src/mred/wxme/wx_mbuf.cxx index 674c5e1449..795d652e9b 100644 --- a/src/mred/wxme/wx_mbuf.cxx +++ b/src/mred/wxme/wx_mbuf.cxx @@ -511,8 +511,8 @@ void wxMediaBuffer::SetStyleList(wxStyleList *newList) this, 1); styleList = newList; - if (!styleList->FindNamedStyle(STD_STYLE)) - styleList->NewNamedStyle(STD_STYLE, NULL); + /* Create STD_STYLE if it's not there: */ + styleList->NewNamedStyle(STD_STYLE, NULL); } static void MediaStyleNotify(wxStyle *which, wxMediaBuffer *media) @@ -521,6 +521,16 @@ static void MediaStyleNotify(wxStyle *which, wxMediaBuffer *media) media->StyleHasChanged(which); } +char *wxMediaBuffer::GetDefaultStyleName() +{ + return STD_STYLE; +} + +wxStyle *wxMediaBuffer::GetDefaultStyle() +{ + return styleList->FindNamedStyle(GetDefaultStyleName()); +} + /******************************************************************/ int wxMediaBuffer::AppendEditItems(wxMenu *, int) @@ -611,13 +621,16 @@ void wxMediaBuffer::DoFont(int, Bool) void wxMediaBuffer::InsertBox(int type) { wxSnip *snip; + char *sname; snip = OnNewBox(type); if (!snip) return; + sname = GetDefaultStyleName(); + BeginEditSequence(); - snip->style = styleList->FindNamedStyle(STD_STYLE); + snip->style = styleList->FindNamedStyle(sname); if (!snip->style) { wxStyle *bs; bs = styleList->BasicStyle(); diff --git a/src/mred/wxme/wx_medad.h b/src/mred/wxme/wx_medad.h index d5cf3ef11f..93d31ac777 100644 --- a/src/mred/wxme/wx_medad.h +++ b/src/mred/wxme/wx_medad.h @@ -137,6 +137,8 @@ class wxMediaBuffer : public wxObject virtual void SettingAdmin(wxMediaAdmin *); virtual void InitNewAdmin(void); + wxStyle *GetDefaultStyle(); + public: wxMediaBuffer(); ~wxMediaBuffer(); @@ -334,6 +336,8 @@ class wxMediaBuffer : public wxObject void SetLoadOverwritesStyles(Bool); Bool GetLoadOverwritesStyles(); + virtual char *GetDefaultStyleName(); + void AddBufferFunctions(wxKeymap *tab); virtual Bool IsLockedForRead() { return 0; } diff --git a/src/mred/wxme/wx_media.cxx b/src/mred/wxme/wx_media.cxx index 7df98678dc..089e249cbb 100644 --- a/src/mred/wxme/wx_media.cxx +++ b/src/mred/wxme/wx_media.cxx @@ -297,9 +297,11 @@ void wxMediaEdit::CopySelfTo(wxMediaBuffer *b) if (!m->LastPosition()) { wxStyle *bs; + char *sname; /* Make sure only snip in m has a good style (since we called m->styleList->Copy() in wxMediaBuffer::CopySelfTo). */ - bs = m->styleList->FindNamedStyle(STD_STYLE); + sname = GetDefaultStyleName(); + bs = m->styleList->FindNamedStyle(sname); m->snips->style = bs; if (!m->snips->style) { bs = m->styleList->BasicStyle(); @@ -1591,7 +1593,7 @@ void wxMediaEdit::_Insert(wxSnip *isnip, long strlen, wxchar *str, wxList *snips wxStyle *style; style = (stickyStyles ? snips->style - : styleList->FindNamedStyle(STD_STYLE)); + : GetDefaultStyle()); snip = InsertTextSnip(start, style); sPos = 0; caretStyle = NULL; @@ -1608,14 +1610,14 @@ void wxMediaEdit::_Insert(wxSnip *isnip, long strlen, wxchar *str, wxList *snips || !(gsnip->flags & wxSNIP_IS_TEXT) || (gsnip->count + addlen > MAX_COUNT_FOR_SNIP) || (!stickyStyles - && (gsnip->style != styleList->FindNamedStyle(STD_STYLE)))) { + && (gsnip->style != GetDefaultStyle()))) { style = (caretStyle ? caretStyle : (stickyStyles ? (gsnip ? gsnip->style : snips->style) // No style: use forward - : styleList->FindNamedStyle(STD_STYLE))); + : GetDefaultStyle())); snip = InsertTextSnip(start, style); caretStyle = NULL; sPos = start; @@ -1624,7 +1626,7 @@ void wxMediaEdit::_Insert(wxSnip *isnip, long strlen, wxchar *str, wxList *snips if (!(snip->flags & wxSNIP_CAN_APPEND)) { style = (stickyStyles ? snip->style - : styleList->FindNamedStyle(STD_STYLE)); + : GetDefaultStyle()); snip = InsertTextSnip(start, style); sPos = start; } @@ -3335,7 +3337,7 @@ Bool wxMediaEdit::ReadFromFile(wxMediaStreamIn *f, long start, Bool overwritesty if (!LastPosition()) { /* We probably destructively changed the style list. Reset the dummy snip. */ - snips->style = styleList->FindNamedStyle(STD_STYLE); + snips->style = GetDefaultStyle(); if (!snips->style) { snips->style = styleList->BasicStyle(); } diff --git a/src/mred/wxme/wx_mpbrd.cxx b/src/mred/wxme/wx_mpbrd.cxx index c5a46ef95a..5b32caed5a 100644 --- a/src/mred/wxme/wx_mpbrd.cxx +++ b/src/mred/wxme/wx_mpbrd.cxx @@ -795,7 +795,7 @@ void wxMediaPasteboard::Insert(wxSnip *snip, wxSnip *before, double x, double y) snip->style = styleList->Convert(snip->style); if (PTREQ(snip->style, styleList->BasicStyle())) { wxStyle *s; - s = styleList->FindNamedStyle(STD_STYLE); + s = GetDefaultStyle(); if (s) snip->style = s; } @@ -1185,7 +1185,7 @@ void wxMediaPasteboard::_ChangeStyle(wxStyle *style, wxStyleDelta *delta, sequenceStreak = TRUE; if (!style && !delta) { - style = styleList->FindNamedStyle(STD_STYLE); + style = GetDefaultStyle(); if (!style) style = styleList->BasicStyle(); } @@ -2475,7 +2475,7 @@ void wxMediaPasteboard::InsertPasteString(wxchar *str) wxTextSnip *snip; snip = new wxTextSnip(); - snip->style = styleList->FindNamedStyle(STD_STYLE); + snip->style = GetDefaultStyle(); if (!snip->style) { snip->style = styleList->BasicStyle(); } diff --git a/src/mred/wxme/wx_mpriv.cxx b/src/mred/wxme/wx_mpriv.cxx index 68eadf24c0..42f9195548 100644 --- a/src/mred/wxme/wx_mpriv.cxx +++ b/src/mred/wxme/wx_mpriv.cxx @@ -254,7 +254,7 @@ void wxMediaEdit::_ChangeStyle(long start, long end, return; if (!newStyle && !delta) { - newStyle = styleList->FindNamedStyle(STD_STYLE); + newStyle = GetDefaultStyle(); if (!newStyle) newStyle = styleList->BasicStyle(); } @@ -802,13 +802,13 @@ void wxMediaEdit::MakeOnlySnip(void) wxMediaLine *line; snips = new wxTextSnip(); - snips->style = styleList->FindNamedStyle(STD_STYLE); + snips->style = GetDefaultStyle(); if (!snips->style) { snips->style = styleList->BasicStyle(); } #if CHECK_CONSISTENCY if (!snips->style) - fprintf(stderr, "NULL style for STD_STYLE!\n"); + fprintf(stderr, "NULL style for basic style!\n"); #endif snips->count = 0; snips->SetAdmin(snipAdmin); @@ -1153,7 +1153,7 @@ wxTextSnip *wxMediaEdit::InsertTextSnip(long start, wxStyle *style) } { wxStyle *styl; - styl = (style ? style : styleList->FindNamedStyle(STD_STYLE)); + styl = (style ? style : GetDefaultStyle()); snip->style = styl; } if (!snip->style) { @@ -1164,7 +1164,7 @@ wxTextSnip *wxMediaEdit::InsertTextSnip(long start, wxStyle *style) /* Uh-oh. Resort to wxTextSnip() */ wxStyle *styl; snip = new wxTextSnip(); - styl = (style ? style : styleList->FindNamedStyle(STD_STYLE)); + styl = (style ? style : GetDefaultStyle()); snip->style = styl; if (!snip->style) { snip->style = styleList->BasicStyle(); diff --git a/src/mred/wxs/wxs_mbuf.xci b/src/mred/wxs/wxs_mbuf.xci index 849ee26fba..596879e2d8 100644 --- a/src/mred/wxs/wxs_mbuf.xci +++ b/src/mred/wxs/wxs_mbuf.xci @@ -91,3 +91,5 @@ @MACRO makeNoCopyFlatString[len] = WITH_VAR_STACK(scheme_make_sized_char_string(r, , 0)) @ X "get-flattened-text" : mzstring/makeNoCopyFlatString[_x0] GetFlattenedText(-long*); + +@ Z "get-default-style-name" : string GetDefaultStyleName() diff --git a/src/mred/wxs/wxs_mede.cxx b/src/mred/wxs/wxs_mede.cxx index 8284962278..bb6f01bfcd 100644 --- a/src/mred/wxs/wxs_mede.cxx +++ b/src/mred/wxs/wxs_mede.cxx @@ -764,6 +764,7 @@ static int unbundle_symset_Bias(Scheme_Object *v, const char *where) { + @@ -996,6 +997,7 @@ class os_wxMediaEdit : public wxMediaEdit { void DoPaste(nnlong x0, ExactLong x1); void DoCopy(nnlong x0, nnlong x1, ExactLong x2, Bool x3); void SetAnchor(Bool x0); + string GetDefaultStyleName(); npathname PutFile(nepathname x0, nepathname x1); npathname GetFile(nepathname x0); void AfterEditSequence(); @@ -1924,6 +1926,45 @@ void os_wxMediaEdit::SetAnchor(Bool x0) } } +static Scheme_Object *os_wxMediaEditGetDefaultStyleName(int n, Scheme_Object *p[]); + +string os_wxMediaEdit::GetDefaultStyleName() +{ + Scheme_Object *p[POFFSET+0] INIT_NULLED_ARRAY({ NULLED_OUT }); + Scheme_Object *v; + Scheme_Object *method INIT_NULLED_OUT; +#ifdef MZ_PRECISE_GC + os_wxMediaEdit *sElF = this; +#endif + static void *mcache = 0; + + SETUP_VAR_STACK(5); + VAR_STACK_PUSH(0, method); + VAR_STACK_PUSH(1, sElF); + VAR_STACK_PUSH_ARRAY(2, p, POFFSET+0); + SET_VAR_STACK(); + + method = objscheme_find_method((Scheme_Object *) ASSELF __gc_external, os_wxMediaEdit_class, "get-default-style-name", &mcache); + if (!method || OBJSCHEME_PRIM_METHOD(method, os_wxMediaEditGetDefaultStyleName)) { + SET_VAR_STACK(); + READY_TO_RETURN; return ASSELF wxMediaEdit::GetDefaultStyleName(); + } else { + + + p[0] = (Scheme_Object *) ASSELF __gc_external; + + v = WITH_VAR_STACK(scheme_apply(method, POFFSET+0, p)); + + + { + string resval; + resval = (string)WITH_VAR_STACK(objscheme_unbundle_string(v, "get-default-style-name in text%"", extracting return value")); + READY_TO_RETURN; + return resval; + } + } +} + static Scheme_Object *os_wxMediaEditPutFile(int n, Scheme_Object *p[]); npathname os_wxMediaEdit::PutFile(nepathname x0, nepathname x1) @@ -7086,6 +7127,30 @@ static Scheme_Object *os_wxMediaEditGetPosition(int n, Scheme_Object *p[]) return scheme_void; } +static Scheme_Object *os_wxMediaEditGetDefaultStyleName(int n, Scheme_Object *p[]) +{ + WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p) + REMEMBER_VAR_STACK(); + string r; + objscheme_check_valid(os_wxMediaEdit_class, "get-default-style-name in text%", n, p); + + SETUP_VAR_STACK_REMEMBERED(1); + VAR_STACK_PUSH(0, p); + + + + + if (((Scheme_Class_Object *)p[0])->primflag) + r = WITH_VAR_STACK(((os_wxMediaEdit *)((Scheme_Class_Object *)p[0])->primdata)->wxMediaEdit::GetDefaultStyleName()); + else + r = WITH_VAR_STACK(((wxMediaEdit *)((Scheme_Class_Object *)p[0])->primdata)->GetDefaultStyleName()); + + + + READY_TO_RETURN; + return WITH_REMEMBERED_STACK(objscheme_bundle_string((char *)r)); +} + static Scheme_Object *os_wxMediaEditGetFlattenedText(int n, Scheme_Object *p[]) { WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p) @@ -8504,7 +8569,7 @@ void objscheme_setup_wxMediaEdit(Scheme_Env *env) wxREGGLOB(os_wxMediaEdit_class); - os_wxMediaEdit_class = WITH_VAR_STACK(objscheme_def_prim_class(env, "text%", "editor%", (Scheme_Method_Prim *)os_wxMediaEdit_ConstructScheme, 149)); + os_wxMediaEdit_class = WITH_VAR_STACK(objscheme_def_prim_class(env, "text%", "editor%", (Scheme_Method_Prim *)os_wxMediaEdit_ConstructScheme, 150)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaEdit_class, "call-clickback" " method", (Scheme_Method_Prim *)os_wxMediaEditCallClickback, 2, 2)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaEdit_class, "remove-clickback" " method", (Scheme_Method_Prim *)os_wxMediaEditRemoveClickback, 2, 2)); @@ -8606,6 +8671,7 @@ void objscheme_setup_wxMediaEdit(Scheme_Env *env) WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaEdit_class, "get-end-position" " method", (Scheme_Method_Prim *)os_wxMediaEditGetEndPosition, 0, 0)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaEdit_class, "get-start-position" " method", (Scheme_Method_Prim *)os_wxMediaEditGetStartPosition, 0, 0)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaEdit_class, "get-position" " method", (Scheme_Method_Prim *)os_wxMediaEditGetPosition, 1, 2)); + WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaEdit_class, "get-default-style-name" " method", (Scheme_Method_Prim *)os_wxMediaEditGetDefaultStyleName, 0, 0)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaEdit_class, "get-flattened-text" " method", (Scheme_Method_Prim *)os_wxMediaEditGetFlattenedText, 0, 0)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaEdit_class, "put-file" " method", (Scheme_Method_Prim *)os_wxMediaEditPutFile, 2, 2)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaEdit_class, "get-file" " method", (Scheme_Method_Prim *)os_wxMediaEditGetFile, 1, 1)); diff --git a/src/mred/wxs/wxs_medi.cxx b/src/mred/wxs/wxs_medi.cxx index c5f49fd4ce..e5d718910f 100644 --- a/src/mred/wxs/wxs_medi.cxx +++ b/src/mred/wxs/wxs_medi.cxx @@ -513,6 +513,7 @@ static Scheme_Object *bundle_symset_bitmapType(int v) { + // W are Methods not intended to be overriden by the user, diff --git a/src/mred/wxs/wxs_mpb.cxx b/src/mred/wxs/wxs_mpb.cxx index 14d1b79067..2258ccf0f2 100644 --- a/src/mred/wxs/wxs_mpb.cxx +++ b/src/mred/wxs/wxs_mpb.cxx @@ -369,6 +369,7 @@ static Scheme_Object *bundle_symset_bitmapType(int v) { + @@ -419,6 +420,7 @@ class os_wxMediaPasteboard : public wxMediaPasteboard { void DoPasteSelection(ExactLong x0); void DoPaste(ExactLong x0); void DoCopy(ExactLong x0, Bool x1); + string GetDefaultStyleName(); npathname PutFile(nepathname x0, nepathname x1); npathname GetFile(nepathname x0); void AfterEditSequence(); @@ -1708,6 +1710,45 @@ void os_wxMediaPasteboard::DoCopy(ExactLong x0, Bool x1) } } +static Scheme_Object *os_wxMediaPasteboardGetDefaultStyleName(int n, Scheme_Object *p[]); + +string os_wxMediaPasteboard::GetDefaultStyleName() +{ + Scheme_Object *p[POFFSET+0] INIT_NULLED_ARRAY({ NULLED_OUT }); + Scheme_Object *v; + Scheme_Object *method INIT_NULLED_OUT; +#ifdef MZ_PRECISE_GC + os_wxMediaPasteboard *sElF = this; +#endif + static void *mcache = 0; + + SETUP_VAR_STACK(5); + VAR_STACK_PUSH(0, method); + VAR_STACK_PUSH(1, sElF); + VAR_STACK_PUSH_ARRAY(2, p, POFFSET+0); + SET_VAR_STACK(); + + method = objscheme_find_method((Scheme_Object *) ASSELF __gc_external, os_wxMediaPasteboard_class, "get-default-style-name", &mcache); + if (!method || OBJSCHEME_PRIM_METHOD(method, os_wxMediaPasteboardGetDefaultStyleName)) { + SET_VAR_STACK(); + READY_TO_RETURN; return ASSELF wxMediaPasteboard::GetDefaultStyleName(); + } else { + + + p[0] = (Scheme_Object *) ASSELF __gc_external; + + v = WITH_VAR_STACK(scheme_apply(method, POFFSET+0, p)); + + + { + string resval; + resval = (string)WITH_VAR_STACK(objscheme_unbundle_string(v, "get-default-style-name in pasteboard%"", extracting return value")); + READY_TO_RETURN; + return resval; + } + } +} + static Scheme_Object *os_wxMediaPasteboardPutFile(int n, Scheme_Object *p[]); npathname os_wxMediaPasteboard::PutFile(nepathname x0, nepathname x1) @@ -5255,6 +5296,30 @@ static Scheme_Object *os_wxMediaPasteboardInsert(int n, Scheme_Object *p[]) return scheme_void; } +static Scheme_Object *os_wxMediaPasteboardGetDefaultStyleName(int n, Scheme_Object *p[]) +{ + WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p) + REMEMBER_VAR_STACK(); + string r; + objscheme_check_valid(os_wxMediaPasteboard_class, "get-default-style-name in pasteboard%", n, p); + + SETUP_VAR_STACK_REMEMBERED(1); + VAR_STACK_PUSH(0, p); + + + + + if (((Scheme_Class_Object *)p[0])->primflag) + r = WITH_VAR_STACK(((os_wxMediaPasteboard *)((Scheme_Class_Object *)p[0])->primdata)->wxMediaPasteboard::GetDefaultStyleName()); + else + r = WITH_VAR_STACK(((wxMediaPasteboard *)((Scheme_Class_Object *)p[0])->primdata)->GetDefaultStyleName()); + + + + READY_TO_RETURN; + return WITH_REMEMBERED_STACK(objscheme_bundle_string((char *)r)); +} + static Scheme_Object *os_wxMediaPasteboardGetFlattenedText(int n, Scheme_Object *p[]) { WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p) @@ -6849,7 +6914,7 @@ void objscheme_setup_wxMediaPasteboard(Scheme_Env *env) wxREGGLOB(os_wxMediaPasteboard_class); - os_wxMediaPasteboard_class = WITH_VAR_STACK(objscheme_def_prim_class(env, "pasteboard%", "editor%", (Scheme_Method_Prim *)os_wxMediaPasteboard_ConstructScheme, 113)); + os_wxMediaPasteboard_class = WITH_VAR_STACK(objscheme_def_prim_class(env, "pasteboard%", "editor%", (Scheme_Method_Prim *)os_wxMediaPasteboard_ConstructScheme, 114)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaPasteboard_class, "set-scroll-step" " method", (Scheme_Method_Prim *)os_wxMediaPasteboardSetScrollStep, 1, 1)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaPasteboard_class, "get-scroll-step" " method", (Scheme_Method_Prim *)os_wxMediaPasteboardGetScrollStep, 0, 0)); @@ -6908,6 +6973,7 @@ void objscheme_setup_wxMediaPasteboard(Scheme_Env *env) WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaPasteboard_class, "do-copy" " method", (Scheme_Method_Prim *)os_wxMediaPasteboardDoCopy, 2, 2)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaPasteboard_class, "delete" " method", (Scheme_Method_Prim *)os_wxMediaPasteboardDelete, 0, 1)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaPasteboard_class, "insert" " method", (Scheme_Method_Prim *)os_wxMediaPasteboardInsert, 1, 4)); + WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaPasteboard_class, "get-default-style-name" " method", (Scheme_Method_Prim *)os_wxMediaPasteboardGetDefaultStyleName, 0, 0)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaPasteboard_class, "get-flattened-text" " method", (Scheme_Method_Prim *)os_wxMediaPasteboardGetFlattenedText, 0, 0)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaPasteboard_class, "put-file" " method", (Scheme_Method_Prim *)os_wxMediaPasteboardPutFile, 2, 2)); WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaPasteboard_class, "get-file" " method", (Scheme_Method_Prim *)os_wxMediaPasteboardGetFile, 1, 1));