Ticket #3065: styled_edit.patch

File styled_edit.patch, 4.5 KB (added by hayarms, 8 years ago)

Patch to StyledEdit

Line 
1*** haiku2/haiku/haiku/src/apps/stylededit/StyledEditWindow.cpp Mon Nov 29 16:11:43 2010
2--- haiku/haiku/src/apps/stylededit/StyledEditWindow.cpp    Mon Nov 29 20:20:09 2010
3***************
4*** 401,450 ****
5            fClearItem->SetEnabled(false);
6            break;
7        case TEXT_CHANGED:
8!           if (fUndoFlag) {
9!               if (fUndoCleans) {
10!                   // we cleaned!
11!                   fClean = true;
12!                   fUndoCleans = false;
13!               } else if (fClean) {
14!                   // if we were clean
15!                   // then a redo will make us clean again
16!                   fRedoCleans = true;
17!                   fClean = false;
18                }
19!               // set mode
20!               fCanUndo = false;
21!               fCanRedo = true;
22!               fUndoItem->SetLabel(B_TRANSLATE("Redo typing"));
23!               fUndoItem->SetEnabled(true);
24!               fUndoFlag = false;
25!           } else {
26!               if (fRedoFlag && fRedoCleans) {
27!                   // we cleaned!
28!                   fClean = true;
29!                   fRedoCleans = false;
30!               } else if (fClean) {
31!                   // if we were clean
32!                   // then an undo will make us clean again
33!                   fUndoCleans = true;
34!                   fClean = false;
35                } else {
36!                   // no more cleaning from undo now...
37!                   fUndoCleans = false;
38                }
39-               // set mode
40-               fCanUndo = true;
41-               fCanRedo = false;
42-               fUndoItem->SetLabel(B_TRANSLATE("Undo typing"));
43-               fUndoItem->SetEnabled(true);
44-               fRedoFlag = false;
45-           }
46-           if (fClean) {
47-               fRevertItem->SetEnabled(false);
48-               fSaveItem->SetEnabled(fSaveMessage == NULL);
49            } else {
50!               fRevertItem->SetEnabled(fSaveMessage != NULL);
51!               fSaveItem->SetEnabled(true);
52            }
53            break;
54 
55--- 401,455 ----
56            fClearItem->SetEnabled(false);
57            break;
58        case TEXT_CHANGED:
59!           if(!fDiscardFakeChanged)
60!           {
61!               if (fUndoFlag) {
62!                   if (fUndoCleans) {
63!                       // we cleaned!
64!                       fClean = true;
65!                       fUndoCleans = false;
66!                   } else if (fClean) {
67!                       // if we were clean
68!                       // then a redo will make us clean again
69!                       fRedoCleans = true;
70!                       fClean = false;
71!                   }
72!                   // set mode
73!                   fCanUndo = false;
74!                   fCanRedo = true;
75!                   fUndoItem->SetLabel(B_TRANSLATE("Redo typing"));
76!                   fUndoItem->SetEnabled(true);
77!                   fUndoFlag = false;
78!               } else {
79!                   if (fRedoFlag && fRedoCleans) {
80!                       // we cleaned!
81!                       fClean = true;
82!                       fRedoCleans = false;
83!                   } else if (fClean) {
84!                       // if we were clean
85!                       // then an undo will make us clean again
86!                       fUndoCleans = true;
87!                       fClean = false;
88!                   } else {
89!                       // no more cleaning from undo now...
90!                       fUndoCleans = false;
91!                   }
92!                   // set mode
93!                   fCanUndo = true;
94!                   fCanRedo = false;
95!                   fUndoItem->SetLabel(B_TRANSLATE("Undo typing"));
96!                   fUndoItem->SetEnabled(true);
97!                   fRedoFlag = false;
98                }
99!               if (fClean) {
100!                   fRevertItem->SetEnabled(false);
101!                   fSaveItem->SetEnabled(fSaveMessage == NULL);
102                } else {
103!                   fRevertItem->SetEnabled(fSaveMessage != NULL);
104!                   fSaveItem->SetEnabled(true);
105                }
106            } else {
107!               fDiscardFakeChanged = false;
108            }
109            break;
110 
111***************
112*** 944,949 ****
113--- 949,957 ----
114    fCaseSensitive = false;
115    fWrapAround = false;
116    fBackSearch = false;
117+   
118+   // fake changed message flag
119+   fDiscardFakeChanged = false;
120 
121    // add menubar
122    fMenuBar = new BMenuBar(BRect(0, 0, 0, 0), "menubar");
123***************
124*** 1267,1280 ****
125 
126        BString text;
127        if (status == B_BAD_TYPE)
128            bs_printf(&text,
129!               B_TRANSLATE("Error loading \"%s\":\n\tUnsupported format"), name);
130        else
131!           bs_printf(&text, B_TRANSLATE("Error loading \"%s\":\n\t%s"),
132                name, strerror(status));
133!
134!       _ShowAlert(text, B_TRANSLATE("OK"), "", "", B_STOP_ALERT);
135!       return status;
136    }
137 
138    // update alignment
139--- 1275,1306 ----
140 
141        BString text;
142        if (status == B_BAD_TYPE)
143+       {
144            bs_printf(&text,
145!               B_TRANSLATE("Error loading \"%s\":\n\tUnsupported format.\nThe file may contain raw data."), name);
146!           _ShowAlert(text, B_TRANSLATE("OK"), "", "", B_WARNING_ALERT);
147!       }
148        else
149!       {   bs_printf(&text, B_TRANSLATE("Error loading \"%s\":\n\t%s"),
150                name, strerror(status));
151!           _ShowAlert(text, B_TRANSLATE("OK"), "", "", B_STOP_ALERT);
152!           return status;
153!       }
154!       
155!       //If the type of the file is bad we display it as binary data
156!       status = file.Seek(0, SEEK_SET);
157!       if (status != B_OK)
158!       {
159!           return status;
160!       }
161!       char buf[1024];
162!       ssize_t read_data;
163!       while((read_data = file.Read(buf, 1023)) > 0)
164!       {
165!           buf[(int)read_data] = '\0';
166!           fTextView->Insert(buf, (const text_run_array*) NULL);
167!       }
168!       fDiscardFakeChanged = true;
169    }
170 
171    // update alignment