add mprotect to execute
@@ -2,6 +2,15 @@ | ||
2 | 2 | |
3 | 3 | * version 2.2.4 |
4 | 4 | |
5 | +2010-06-26 Kazuki Iwamoto <iwm@maid.org> | |
6 | + | |
7 | + * configure.ac: | |
8 | + * w32loader/w32ldr.c: add mprotect to execute | |
9 | + | |
10 | +2010-06-25 Kazuki Iwamoto <iwm@maid.org> | |
11 | + | |
12 | + * orz/orzmdi.[ch]: delete orz_mdi_{append,prepend,insert}_page_menu | |
13 | + | |
5 | 14 | 2010-06-23 Kazuki Iwamoto <iwm@maid.org> |
6 | 15 | |
7 | 16 | * orz/orzmdi.c: add gtk_event_box_set_visible_window |
@@ -124,7 +124,7 @@ | ||
124 | 124 | g_strcpy (gchar *dest, |
125 | 125 | const gchar *src) |
126 | 126 | { |
127 | - return g_strncpy (dest, src, G_MAXSIZE); | |
127 | + return dest && src ? strcpy (dest, src) : dest; | |
128 | 128 | } |
129 | 129 | |
130 | 130 |
@@ -141,7 +141,7 @@ | ||
141 | 141 | g_strcat (gchar *dest, |
142 | 142 | const gchar *src) |
143 | 143 | { |
144 | - return g_strncat (dest, src, G_MAXSIZE); | |
144 | + return dest && src ? strcat (dest, src) : dest; | |
145 | 145 | } |
146 | 146 | |
147 | 147 |
@@ -159,7 +159,7 @@ | ||
159 | 159 | g_strcmp (const gchar *s1, |
160 | 160 | const gchar *s2) |
161 | 161 | { |
162 | - return g_strncmp (s1, s2, G_MAXSIZE); | |
162 | + return s1 && s2 ? strcmp (s1, s2) : 0; | |
163 | 163 | } |
164 | 164 | #endif /* not GLIB_CHECK_VERSION(2,16,0) */ |
165 | 165 |
@@ -36,6 +36,12 @@ | ||
36 | 36 | #include "misc/fileio.h" |
37 | 37 | #include "misc/peimage.h" |
38 | 38 | #include "misc/profile.h" |
39 | +#ifdef HAVE_SYS_MMAN_H | |
40 | +# include <sys/mman.h> | |
41 | +#endif /* HAVE_SYS_MMAN_H */ | |
42 | +#ifdef HAVE_UNISTD_H | |
43 | +# include <unistd.h> | |
44 | +#endif /* HAVE_UNISTD_H */ | |
39 | 45 | |
40 | 46 | |
41 | 47 | #define USE_DEBUG 1 |
@@ -113,22 +119,26 @@ | ||
113 | 119 | gsize leng, leng_head, leng_code, leng_data; |
114 | 120 | LPDWORD lpdwSignature, lpdwFunction, lpdwName; |
115 | 121 | LPWORD lpwOrdinal; |
116 | - PIMAGE_DOS_HEADER pidh; | |
117 | - PIMAGE_FILE_HEADER pifh; | |
118 | - PIMAGE_OPTIONAL_HEADER pioh; | |
119 | - PIMAGE_SECTION_HEADER pish; | |
120 | - PIMAGE_EXPORT_DIRECTORY pied; | |
122 | + ImageDosHeader *idh; | |
123 | + ImageFileHeader *ifh; | |
124 | + ImageOptionalHeader *ioh; | |
125 | + ImageSectionHeader *ish; | |
126 | + ImageExportDirectory *ied; | |
127 | +#if defined (HAVE_SYS_MMAN_H) && defined (HAVE_UNISTD_H) | |
128 | + gint pagesize; | |
129 | + guint addr; | |
130 | +#endif /* defined (HAVE_SYS_MMAN_H) && defined (HAVE_UNISTD_H) */ | |
121 | 131 | #ifdef USE_DEBUG |
122 | 132 | gchar *r; |
123 | 133 | #endif /* USE_DEBUG */ |
124 | 134 | |
125 | - leng_head = sizeof (IMAGE_DOS_HEADER) | |
135 | + leng_head = sizeof (ImageDosHeader) | |
126 | 136 | + sizeof (DWORD) |
127 | - + sizeof (IMAGE_FILE_HEADER) | |
128 | - + sizeof (IMAGE_OPTIONAL_HEADER) | |
129 | - + sizeof (IMAGE_SECTION_HEADER); | |
137 | + + sizeof (ImageFileHeader) | |
138 | + + sizeof (ImageOptionalHeader) | |
139 | + + sizeof (ImageSectionHeader); | |
130 | 140 | leng_code = 0; |
131 | - leng_data = sizeof (IMAGE_EXPORT_DIRECTORY) | |
141 | + leng_data = sizeof (ImageExportDirectory) | |
132 | 142 | + g_strlen (osdll[i].name) + 1; |
133 | 143 | for (j = 0; osdll[i].exports[j].func; j++) |
134 | 144 | if (osdll[i].exports[j].implement >= 0) |
@@ -154,15 +164,22 @@ | ||
154 | 164 | leng_data += (ordinal_max - ordinal_min + 1) * sizeof (DWORD); |
155 | 165 | leng = leng_head + leng_code + leng_data; |
156 | 166 | image = g_malloc0 (leng); |
167 | +#if defined (HAVE_SYS_MMAN_H) && defined (HAVE_UNISTD_H) | |
168 | + pagesize = sysconf (_SC_PAGE_SIZE); | |
169 | + addr = GPOINTER_TO_UINT (image) / pagesize * pagesize; | |
170 | + mprotect (GUINT_TO_POINTER (addr), | |
171 | + (GPOINTER_TO_UINT (image) + leng + pagesize - 1) | |
172 | + / pagesize * pagesize - addr, PROT_READ | PROT_WRITE | PROT_EXEC); | |
173 | +#endif /* defined (HAVE_SYS_MMAN_H) && defined (HAVE_UNISTD_H) */ | |
157 | 174 | /* ja:ポインタ */ |
158 | - pidh = (PIMAGE_DOS_HEADER)image; | |
159 | - lpdwSignature = (LPDWORD)(pidh + 1); | |
160 | - pifh = (PIMAGE_FILE_HEADER)(lpdwSignature + 1); | |
161 | - pioh = (PIMAGE_OPTIONAL_HEADER)(pifh + 1); | |
162 | - pish = (PIMAGE_SECTION_HEADER)(pioh + 1); | |
163 | - p = (guint8 *)(pish + 1); | |
164 | - pied = (PIMAGE_EXPORT_DIRECTORY)(p + leng_code); | |
165 | - lpdwFunction = (LPDWORD)(pied + 1); | |
175 | + idh = (ImageDosHeader *)image; | |
176 | + lpdwSignature = (LPDWORD)(idh + 1); | |
177 | + ifh = (ImageFileHeader *)(lpdwSignature + 1); | |
178 | + ioh = (ImageOptionalHeader *)(ifh + 1); | |
179 | + ish = (ImageSectionHeader *)(ioh + 1); | |
180 | + p = (guint8 *)(ish + 1); | |
181 | + ied = (ImageExportDirectory *)(p + leng_code); | |
182 | + lpdwFunction = (LPDWORD)(ied + 1); | |
166 | 183 | lpdwName = lpdwFunction + ordinal_max - ordinal_min + 1; |
167 | 184 | lpwOrdinal = (LPWORD)(lpdwName + num); |
168 | 185 | q = (gchar *)(lpwOrdinal + num); |
@@ -170,58 +187,60 @@ | ||
170 | 187 | r = q; |
171 | 188 | #endif /* USE_DEBUG */ |
172 | 189 | /* ja:設定 */ |
173 | - pidh->e_magic = IMAGE_DOS_SIGNATURE; | |
174 | - pidh->e_lfanew = sizeof (IMAGE_DOS_HEADER); | |
175 | - *lpdwSignature = IMAGE_NT_SIGNATURE; | |
176 | - pifh->Machine = IMAGE_FILE_MACHINE_I386; | |
177 | - pifh->NumberOfSections = 1; | |
178 | - pifh->SizeOfOptionalHeader = sizeof (IMAGE_OPTIONAL_HEADER); | |
179 | - pifh->Characteristics = IMAGE_FILE_EXECUTABLE_IMAGE | |
180 | - | IMAGE_FILE_LINE_NUMS_STRIPPED | |
181 | - | IMAGE_FILE_LOCAL_SYMS_STRIPPED | |
182 | - | IMAGE_FILE_32BIT_MACHINE | |
183 | - | IMAGE_FILE_DLL; | |
184 | - pioh->Magic = IMAGE_NT_OPTIONAL_HDR_MAGIC; | |
185 | - pioh->SizeOfCode = leng_code; | |
186 | - pioh->SizeOfInitializedData = leng_data; | |
187 | - pioh->BaseOfCode = leng_head; | |
188 | - pioh->BaseOfData = leng_head + leng_code; | |
189 | - pioh->ImageBase = 0x10000000; | |
190 | - pioh->SectionAlignment = 1; | |
191 | - pioh->FileAlignment = 1; | |
192 | - pioh->MajorOperatingSystemVersion = 4; | |
193 | - pioh->MinorOperatingSystemVersion = 0; | |
194 | - pioh->MajorSubsystemVersion = 4; | |
195 | - pioh->MinorSubsystemVersion = 0; | |
196 | - pioh->SizeOfImage = leng; | |
197 | - pioh->SizeOfHeaders = leng_head; | |
198 | - pioh->Subsystem = IMAGE_SUBSYSTEM_WINDOWS_GUI; | |
199 | - pioh->SizeOfStackReserve = 0x100000; | |
200 | - pioh->SizeOfStackCommit = 0x1000; | |
201 | - pioh->SizeOfHeapReserve = 0x100000; | |
202 | - pioh->SizeOfHeapCommit = 0x1000; | |
203 | - pioh->NumberOfRvaAndSizes = IMAGE_NUMBEROF_DIRECTORY_ENTRIES; | |
204 | - pioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress | |
205 | - = leng_head + leng_code; | |
206 | - pioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size = leng_data; | |
207 | - pish->Misc.VirtualSize = leng_code + leng_data; | |
208 | - pish->VirtualAddress = leng_head; | |
209 | - pish->SizeOfRawData = leng_code + leng_data; | |
210 | - pish->PointerToRawData = leng_head; | |
211 | - pish->Characteristics = IMAGE_SCN_CNT_CODE | |
212 | - | IMAGE_SCN_CNT_INITIALIZED_DATA | |
213 | - | IMAGE_SCN_MEM_EXECUTE | |
214 | - | IMAGE_SCN_MEM_READ; | |
215 | - pied->Name = GPOINTER_TO_UINT (q) - GPOINTER_TO_UINT (image); | |
216 | - pied->Base = ordinal_min; | |
217 | - pied->NumberOfFunctions = ordinal_max - ordinal_min + 1; | |
218 | - pied->NumberOfNames = num; | |
219 | - pied->AddressOfFunctions = GPOINTER_TO_UINT (lpdwFunction) | |
220 | - - GPOINTER_TO_UINT (image); | |
221 | - pied->AddressOfNames = GPOINTER_TO_UINT (lpdwName) | |
222 | - - GPOINTER_TO_UINT (image); | |
223 | - pied->AddressOfNameOrdinals = GPOINTER_TO_UINT (lpwOrdinal) | |
224 | - - GPOINTER_TO_UINT (image); | |
190 | + idh_set_magic (idh, PEIMAGE_DOS_SIGNATURE); | |
191 | + idh_set_lfanew (idh, sizeof (ImageDosHeader)); | |
192 | + *lpdwSignature = PEIMAGE_NT_SIGNATURE; | |
193 | + ifh_set_machine (ifh, PEIMAGE_FILE_MACHINE_I386); | |
194 | + ifh_set_number_of_sections (ifh, 1); | |
195 | + ifh_set_size_of_optional_header (ifh, sizeof (ImageOptionalHeader)); | |
196 | + ifh_set_characteristics (ifh, PEIMAGE_FILE_EXECUTABLE_IMAGE | |
197 | + | PEIMAGE_FILE_LINE_NUMS_STRIPPED | |
198 | + | PEIMAGE_FILE_LOCAL_SYMS_STRIPPED | |
199 | + | PEIMAGE_FILE_32BIT_MACHINE | |
200 | + | PEIMAGE_FILE_DLL); | |
201 | + ioh_set_magic (ioh, PEIMAGE_NT_OPTIONAL_HDR_MAGIC); | |
202 | + ioh_set_size_of_code (ioh, leng_code); | |
203 | + ioh_set_size_of_initialized_data (ioh, leng_data); | |
204 | + ioh_set_base_of_code (ioh, leng_head); | |
205 | + ioh_set_base_of_data (ioh, leng_head + leng_code); | |
206 | + ioh_set_image_base (ioh, 0x10000000); | |
207 | + ioh_set_section_alignment (ioh, 1); | |
208 | + ioh_set_file_alignment (ioh, 1); | |
209 | + ioh_set_major_operating_system_version (ioh, 4); | |
210 | + ioh_set_minor_operating_system_version (ioh, 0); | |
211 | + ioh_set_major_subsystem_version (ioh, 4); | |
212 | + ioh_set_minor_subsystem_version (ioh, 0); | |
213 | + ioh_set_size_of_image (ioh, leng); | |
214 | + ioh_set_size_of_headers (ioh, leng_head); | |
215 | + ioh_set_subsystem (ioh, PEIMAGE_SUBSYSTEM_WINDOWS_GUI); | |
216 | + ioh_set_size_of_stack_reserve (ioh, 0x100000); | |
217 | + ioh_set_size_of_stack_commit (ioh, 0x1000); | |
218 | + ioh_set_size_of_heap_reserve (ioh, 0x100000); | |
219 | + ioh_set_size_of_heap_commit (ioh, 0x1000); | |
220 | + ioh_set_number_of_rva_and_sizes (ioh, | |
221 | + PEIMAGE_NUMBEROF_DIRECTORY_ENTRIES); | |
222 | + ioh_set_data_directory_virtual_address (ioh, | |
223 | + PEIMAGE_DIRECTORY_ENTRY_EXPORT, leng_head + leng_code); | |
224 | + ioh_set_data_directory_size (ioh, | |
225 | + PEIMAGE_DIRECTORY_ENTRY_EXPORT, leng_data); | |
226 | + ish_set_virtual_size (ish, leng_code + leng_data); | |
227 | + ish_set_virtual_address (ish, leng_head); | |
228 | + ish_set_size_of_raw_data (ish, leng_code + leng_data); | |
229 | + ish_set_pointer_to_raw_data (ish, leng_head); | |
230 | + ish_set_characteristics (ish, PEIMAGE_SCN_CNT_CODE | |
231 | + | PEIMAGE_SCN_CNT_INITIALIZED_DATA | |
232 | + | PEIMAGE_SCN_MEM_EXECUTE | |
233 | + | PEIMAGE_SCN_MEM_READ); | |
234 | + ied_set_name(ied, GPOINTER_TO_UINT (q) - GPOINTER_TO_UINT (image)); | |
235 | + ied_set_base (ied, ordinal_min); | |
236 | + ied_set_number_of_functions (ied, ordinal_max - ordinal_min + 1); | |
237 | + ied_set_number_of_names (ied, num); | |
238 | + ied_set_address_of_functions (ied, GPOINTER_TO_UINT (lpdwFunction) | |
239 | + - GPOINTER_TO_UINT (image)); | |
240 | + ied_set_address_of_names (ied, GPOINTER_TO_UINT (lpdwName) | |
241 | + - GPOINTER_TO_UINT (image)); | |
242 | + ied_set_address_of_name_ordinals (ied, GPOINTER_TO_UINT (lpwOrdinal) | |
243 | + - GPOINTER_TO_UINT (image)); | |
225 | 244 | g_strcpy (q, osdll[i].name); |
226 | 245 | q += g_strlen (osdll[i].name) + 1; |
227 | 246 | for (j = 0; osdll[i].exports[j].func; j++) |
@@ -309,6 +328,30 @@ | ||
309 | 328 | const gboolean reason, |
310 | 329 | gpointer user_data) |
311 | 330 | { |
331 | +#if defined (HAVE_SYS_MMAN_H) && defined (HAVE_UNISTD_H) | |
332 | + gint i, pagesize; | |
333 | + gssize length = 0; | |
334 | + guint16 sections; | |
335 | + guint addr; | |
336 | + ImageSectionHeader *ish; | |
337 | + | |
338 | + pagesize = sysconf (_SC_PAGE_SIZE); | |
339 | + sections = pe_ifh_get_number_of_sections (image); | |
340 | + ish = pe_image_section_header (image); | |
341 | + for (i = 0; i < sections; i++) | |
342 | + { | |
343 | + gssize leng; | |
344 | + | |
345 | + leng = ish_get_virtual_size (ish) + ish_get_virtual_address (ish); | |
346 | + if (length < leng) | |
347 | + length = leng; | |
348 | + ish++; | |
349 | + } | |
350 | + addr = GPOINTER_TO_UINT (image) / pagesize * pagesize; | |
351 | + mprotect (GUINT_TO_POINTER (addr), | |
352 | + (GPOINTER_TO_UINT (image) + length + pagesize - 1) | |
353 | + / pagesize * pagesize - addr, PROT_READ | PROT_WRITE | PROT_EXEC); | |
354 | +#endif /* defined (HAVE_SYS_MMAN_H) && defined (HAVE_UNISTD_H) */ | |
312 | 355 | if (pe_ifh_get_characteristics (image) & IMAGE_FILE_DLL) |
313 | 356 | { |
314 | 357 | DllEntryProc DllMain; |
@@ -193,7 +193,7 @@ | ||
193 | 193 | dnl Checks for header files. |
194 | 194 | dnl ************************************************************** |
195 | 195 | AC_HEADER_STDBOOL |
196 | -AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h complex.h fcntl.h netdb.h netinet/in.h resolv.h stdint.h sys/file.h sys/select.h sys/socket.h sys/stat.h sys/time.h sys/timeb.h sys/types.h unistd.h utime.h) | |
196 | +AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h complex.h fcntl.h netdb.h netinet/in.h resolv.h stdint.h sys/file.h sys/mman.h sys/select.h sys/socket.h sys/stat.h sys/time.h sys/timeb.h sys/types.h unistd.h utime.h) | |
197 | 197 | |
198 | 198 | dnl ************************************************************** |
199 | 199 | dnl Checks for typedefs, structures, and compiler characteristics. |
@@ -520,28 +520,67 @@ | ||
520 | 520 | } |
521 | 521 | |
522 | 522 | |
523 | -/* ja:ページのタブを作る | |
523 | +/* ja:ページを最後に追加する | |
524 | 524 | mdi,ウィジェット |
525 | 525 | child,内容 |
526 | 526 | file,ファイル名 |
527 | 527 | created,TRUE:新規作成,FALSE:既存ファイル |
528 | 528 | page_data,ページデータ |
529 | - RET,ウィジェット */ | |
530 | -static GtkWidget * | |
531 | -orz_mdi_create_tab_label (OrzMdi *mdi, | |
532 | - GtkWidget *child, | |
533 | - const gchar *file, | |
534 | - const gboolean created, | |
535 | - gpointer page_data) | |
529 | + RET,ページ(0...,-1:エラー) */ | |
530 | +gint | |
531 | +orz_mdi_append_page (OrzMdi *mdi, | |
532 | + GtkWidget *child, | |
533 | + const gchar *file, | |
534 | + const gboolean created, | |
535 | + gpointer page_data) | |
536 | 536 | { |
537 | + return orz_mdi_insert_page (mdi, child, -1, file, created, page_data); | |
538 | +} | |
539 | + | |
540 | + | |
541 | +/* ja:ページを最初に追加する | |
542 | + mdi,ウィジェット | |
543 | + child,内容 | |
544 | + file,ファイル名 | |
545 | + created,TRUE:新規作成,FALSE:既存ファイル | |
546 | + page_data,ページデータ | |
547 | + RET,ページ(0...,-1:エラー) */ | |
548 | +gint | |
549 | +orz_mdi_prepend_page (OrzMdi *mdi, | |
550 | + GtkWidget *child, | |
551 | + const gchar *file, | |
552 | + const gboolean created, | |
553 | + gpointer page_data) | |
554 | +{ | |
555 | + return orz_mdi_insert_page (mdi, child, 0, file, created, page_data); | |
556 | +} | |
557 | + | |
558 | + | |
559 | +/* ja:ページを挿入する | |
560 | + mdi,ウィジェット | |
561 | + child,内容 | |
562 | + position,位置(0...) | |
563 | + file,ファイル名 | |
564 | + created,TRUE:新規作成,FALSE:既存ファイル | |
565 | + page_data,ページデータ | |
566 | + RET,ページ(0...,-1:エラー) */ | |
567 | +gint | |
568 | +orz_mdi_insert_page (OrzMdi *mdi, | |
569 | + GtkWidget *child, | |
570 | + const gint position, | |
571 | + const gchar *file, | |
572 | + const gboolean created, | |
573 | + gpointer page_data) | |
574 | +{ | |
575 | + gint page_num; | |
537 | 576 | GdkPixbuf *pixbuf; |
538 | - GtkWidget *button, *hbox, *event; | |
539 | 577 | GtkTargetEntry dnd_entries[1] = {{"ORZ_MDI_TAB", |
540 | 578 | GTK_TARGET_SAME_APP, TARGET_ORZ_MDI_TAB}}; |
579 | + GtkWidget *button, *hbox, *event; | |
541 | 580 | OrzMdiTab *tab; |
542 | 581 | |
543 | - if (!mdi) | |
544 | - return NULL; | |
582 | + if (!mdi || !child) | |
583 | + return -1; | |
545 | 584 | tab = g_malloc0 (sizeof (OrzMdiTab)); |
546 | 585 | tab->page_data = page_data; |
547 | 586 | tab->created = created; |
@@ -599,144 +638,13 @@ | ||
599 | 638 | G_CALLBACK (orz_mdi_tab_drag_data_get), NULL); |
600 | 639 | g_signal_connect (G_OBJECT (event), "drag_data_received", |
601 | 640 | G_CALLBACK (orz_mdi_tab_drag_data_received), NULL); |
602 | - | |
603 | - return event; | |
604 | -} | |
605 | - | |
606 | - | |
607 | -/* ja:ページを最後に追加する | |
608 | - mdi,ウィジェット | |
609 | - child,内容 | |
610 | - file,ファイル名 | |
611 | - created,TRUE:新規作成,FALSE:既存ファイル | |
612 | - page_data,ページデータ | |
613 | - RET,ページ(0...,-1:エラー) */ | |
614 | -gint | |
615 | -orz_mdi_append_page (OrzMdi *mdi, | |
616 | - GtkWidget *child, | |
617 | - const gchar *file, | |
618 | - const gboolean created, | |
619 | - gpointer page_data) | |
620 | -{ | |
621 | - return orz_mdi_insert_page_menu (mdi, child, NULL, -1, | |
622 | - file, created, page_data); | |
623 | -} | |
624 | - | |
625 | - | |
626 | -/* ja:ページを最後に追加する | |
627 | - mdi,ウィジェット | |
628 | - child,内容 | |
629 | - menu,メニュー | |
630 | - file,ファイル名 | |
631 | - created,TRUE:新規作成,FALSE:既存ファイル | |
632 | - page_data,ページデータ | |
633 | - RET,ページ(0...,-1:エラー) */ | |
634 | -gint | |
635 | -orz_mdi_append_page_menu (OrzMdi *mdi, | |
636 | - GtkWidget *child, | |
637 | - GtkWidget *menu, | |
638 | - const gchar *file, | |
639 | - const gboolean created, | |
640 | - gpointer page_data) | |
641 | -{ | |
642 | - return orz_mdi_insert_page_menu (mdi, child, menu, -1, | |
643 | - file, created, page_data); | |
644 | -} | |
645 | - | |
646 | - | |
647 | -/* ja:ページを最初に追加する | |
648 | - mdi,ウィジェット | |
649 | - child,内容 | |
650 | - file,ファイル名 | |
651 | - created,TRUE:新規作成,FALSE:既存ファイル | |
652 | - page_data,ページデータ | |
653 | - RET,ページ(0...,-1:エラー) */ | |
654 | -gint | |
655 | -orz_mdi_prepend_page (OrzMdi *mdi, | |
656 | - GtkWidget *child, | |
657 | - const gchar *file, | |
658 | - const gboolean created, | |
659 | - gpointer page_data) | |
660 | -{ | |
661 | - return orz_mdi_insert_page_menu (mdi, child, NULL, 0, | |
662 | - file, created, page_data); | |
663 | -} | |
664 | - | |
665 | - | |
666 | -/* ja:ページを最初に追加する | |
667 | - mdi,ウィジェット | |
668 | - child,内容 | |
669 | - menu,メニュー | |
670 | - file,ファイル名 | |
671 | - created,TRUE:新規作成,FALSE:既存ファイル | |
672 | - page_data,ページデータ | |
673 | - RET,ページ(0...,-1:エラー) */ | |
674 | -gint | |
675 | -orz_mdi_prepend_page_menu (OrzMdi *mdi, | |
676 | - GtkWidget *child, | |
677 | - GtkWidget *menu, | |
678 | - const gchar *file, | |
679 | - const gboolean created, | |
680 | - gpointer page_data) | |
681 | -{ | |
682 | - return orz_mdi_insert_page_menu (mdi, child, menu, 0, | |
683 | - file, created, page_data); | |
684 | -} | |
685 | - | |
686 | - | |
687 | -/* ja:ページを挿入する | |
688 | - mdi,ウィジェット | |
689 | - child,内容 | |
690 | - position,位置(0...) | |
691 | - file,ファイル名 | |
692 | - created,TRUE:新規作成,FALSE:既存ファイル | |
693 | - page_data,ページデータ | |
694 | - RET,ページ(0...,-1:エラー) */ | |
695 | -gint | |
696 | -orz_mdi_insert_page (OrzMdi *mdi, | |
697 | - GtkWidget *child, | |
698 | - const gint position, | |
699 | - const gchar *file, | |
700 | - const gboolean created, | |
701 | - gpointer page_data) | |
702 | -{ | |
703 | - return orz_mdi_insert_page_menu (mdi, child, NULL, position, | |
704 | - file, created, page_data); | |
705 | -} | |
706 | - | |
707 | - | |
708 | -/* ja:ページを挿入する | |
709 | - mdi,ウィジェット | |
710 | - child,内容 | |
711 | - menu,メニュー | |
712 | - position,位置(0...) | |
713 | - file,ファイル名 | |
714 | - created,TRUE:新規作成,FALSE:既存ファイル | |
715 | - page_data,ページデータ | |
716 | - RET,ページ(0...,-1:エラー) */ | |
717 | -gint | |
718 | -orz_mdi_insert_page_menu (OrzMdi *mdi, | |
719 | - GtkWidget *child, | |
720 | - GtkWidget *menu, | |
721 | - const gint position, | |
722 | - const gchar *file, | |
723 | - const gboolean created, | |
724 | - gpointer page_data) | |
725 | -{ | |
726 | - gint page_num = -1; | |
727 | - GtkWidget *tab_label; | |
728 | - | |
729 | - tab_label = orz_mdi_create_tab_label (mdi, child, file, created, page_data); | |
730 | - if (tab_label) | |
731 | - { | |
732 | - page_num = gtk_notebook_insert_page_menu (GTK_NOTEBOOK (mdi), child, | |
733 | - tab_label, menu, position); | |
734 | - g_signal_emit (mdi, | |
735 | - orz_mdi_signals[ADD_WINDOW_SIGNAL], | |
736 | - 0, | |
737 | - page_num, | |
738 | - page_data); | |
739 | - } | |
641 | + page_num = gtk_notebook_insert_page (GTK_NOTEBOOK (mdi), child, | |
642 | + event, position); | |
643 | + g_signal_emit (mdi, | |
644 | + orz_mdi_signals[ADD_WINDOW_SIGNAL], | |
645 | + 0, | |
646 | + page_num, | |
647 | + page_data); | |
740 | 648 | return page_num; |
741 | 649 | } |
742 | 650 |
@@ -107,23 +107,6 @@ | ||
107 | 107 | gpointer page_data); |
108 | 108 | |
109 | 109 | |
110 | -/* ja:ページを最後に追加する | |
111 | - mdi,ウィジェット | |
112 | - child,内容 | |
113 | - menu,メニュー | |
114 | - file,ファイル名 | |
115 | - created,TRUE:新規作成,FALSE:既存ファイル | |
116 | - page_data,ページデータ | |
117 | - RET,ページ(0...,-1:エラー) */ | |
118 | -gint | |
119 | -orz_mdi_append_page_menu (OrzMdi *mdi, | |
120 | - GtkWidget *child, | |
121 | - GtkWidget *menu, | |
122 | - const gchar *file, | |
123 | - const gboolean created, | |
124 | - gpointer page_data); | |
125 | - | |
126 | - | |
127 | 110 | /* ja:ページを最初に追加する |
128 | 111 | mdi,ウィジェット |
129 | 112 | child,内容 |
@@ -139,23 +122,6 @@ | ||
139 | 122 | gpointer page_data); |
140 | 123 | |
141 | 124 | |
142 | -/* ja:ページを最初に追加する | |
143 | - mdi,ウィジェット | |
144 | - child,内容 | |
145 | - menu,メニュー | |
146 | - file,ファイル名 | |
147 | - created,TRUE:新規作成,FALSE:既存ファイル | |
148 | - page_data,ページデータ | |
149 | - RET,ページ(0...,-1:エラー) */ | |
150 | -gint | |
151 | -orz_mdi_prepend_page_menu (OrzMdi *mdi, | |
152 | - GtkWidget *child, | |
153 | - GtkWidget *menu, | |
154 | - const gchar *file, | |
155 | - const gboolean created, | |
156 | - gpointer page_data); | |
157 | - | |
158 | - | |
159 | 125 | /* ja:ページを挿入する |
160 | 126 | mdi,ウィジェット |
161 | 127 | child,内容 |
@@ -173,25 +139,6 @@ | ||
173 | 139 | gpointer page_data); |
174 | 140 | |
175 | 141 | |
176 | -/* ja:ページを挿入する | |
177 | - mdi,ウィジェット | |
178 | - child,内容 | |
179 | - menu,メニュー | |
180 | - position,位置(0...) | |
181 | - file,ファイル名 | |
182 | - created,TRUE:新規作成,FALSE:既存ファイル | |
183 | - page_data,ページデータ | |
184 | - RET,ページ(0...,-1:エラー) */ | |
185 | -gint | |
186 | -orz_mdi_insert_page_menu (OrzMdi *mdi, | |
187 | - GtkWidget *child, | |
188 | - GtkWidget *menu, | |
189 | - const gint position, | |
190 | - const gchar *file, | |
191 | - const gboolean created, | |
192 | - gpointer page_data); | |
193 | - | |
194 | - | |
195 | 142 | /* ja:ページ数を取得する |
196 | 143 | mdi,ウィジェット |
197 | 144 | RET,ページ数 */ |