From: <kr_...@us...> - 2003-04-26 20:03:11
|
Update of /cvsroot/htoolkit/port/src/cbits/GTK In directory sc8-pr-cvs1:/tmp/cvs-serv15534/port/src/cbits/GTK Modified Files: Window.c Log Message: Complete implementation for modal and modeless dialogs Index: Window.c =================================================================== RCS file: /cvsroot/htoolkit/port/src/cbits/GTK/Window.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Window.c 2 Apr 2003 20:00:24 -0000 1.14 --- Window.c 26 Apr 2003 20:03:06 -0000 1.15 *************** *** 237,247 **** }; ! WindowHandle osCreateWindow() { GtkWidget *fixed, *sw, *viewport; ! ! if (gDocumentInterface == 1 && gClientWidget != NULL) ! return NULL; ! /* Create a Scrolled Window */ sw = gtk_scrolled_window_new (NULL, NULL); --- 237,244 ---- }; ! static WindowHandle create_generic_window() { GtkWidget *fixed, *sw, *viewport; ! /* Create a Scrolled Window */ sw = gtk_scrolled_window_new (NULL, NULL); *************** *** 256,261 **** NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), ! GTK_POLICY_AUTOMATIC, ! GTK_POLICY_AUTOMATIC); gtk_widget_show(sw); --- 253,258 ---- NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), ! GTK_POLICY_AUTOMATIC, ! GTK_POLICY_AUTOMATIC); gtk_widget_show(sw); *************** *** 293,296 **** --- 290,306 ---- GTK_SIGNAL_FUNC(frame_adjustment_value_changed_handler), sw); + + return sw; + } + + WindowHandle osCreateWindow() + { + GtkWidget *sw, *viewport; + + if (gDocumentInterface == 1 && gClientWidget != NULL) + return NULL; + + sw = create_generic_window(); + viewport = GTK_BIN(sw)->child; if (gDocumentInterface == 2) *************** *** 301,309 **** gtk_box_pack_end(GTK_BOX(GTK_BIN(gFrameWidget)->child), sw, TRUE, TRUE, 0); } ! gtk_widget_realize(viewport); gdk_window_set_events(viewport->window, gdk_window_get_events(viewport->window) | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); return sw; } --- 311,320 ---- gtk_box_pack_end(GTK_BOX(GTK_BIN(gFrameWidget)->child), sw, TRUE, TRUE, 0); } ! gtk_widget_realize(viewport); gdk_window_set_events(viewport->window, gdk_window_get_events(viewport->window) | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); + return sw; } *************** *** 312,316 **** WindowHandle osCreateDialog(WindowHandle parent) { ! return NULL; } --- 323,346 ---- WindowHandle osCreateDialog(WindowHandle parent) { ! GtkWidget *sw, *viewport, *frame; ! ! if (parent == NULL) ! parent = gFrameWidget; ! else ! parent = gtk_widget_get_toplevel(parent); ! ! frame = gtk_window_new (GTK_WINDOW_TOPLEVEL); ! gtk_window_set_transient_for(frame, gtk_widget_get_toplevel(parent)); ! gtk_window_set_destroy_with_parent(frame, gtk_true()); ! ! sw = create_generic_window(); ! viewport = GTK_BIN(sw)->child; ! ! gtk_container_add(GTK_CONTAINER(frame), sw); ! ! gtk_widget_realize(viewport); ! gdk_window_set_events(viewport->window, ! gdk_window_get_events(viewport->window) | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); ! return sw; } *************** *** 360,389 **** char *osGetWindowTitle(WindowHandle window) { ! if (gDocumentInterface == 2) { ! GtkWidget *label; ! label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(gClientWidget),window); ! gWindowName = gtk_label_get_text(GTK_LABEL(label)); } - - return strdup(gWindowName); }; void osSetWindowTitle(WindowHandle window, char *title) { ! if (gDocumentInterface == 2) { ! GtkWidget *label; ! label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(gClientWidget),window); ! gtk_label_set_text(GTK_LABEL(label), title); ! gtk_notebook_set_menu_label_text(GTK_NOTEBOOK(gClientWidget),window,title); } else { ! gWindowName = strdup(title); ! updateFrameTitle(); } }; --- 390,438 ---- char *osGetWindowTitle(WindowHandle window) { ! GtkWidget *toplevel = gtk_widget_get_toplevel(window); ! ! if (toplevel == gFrameWidget) { ! if (gDocumentInterface == 2) ! { ! GtkWidget *label; ! label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(gClientWidget),window); ! gWindowName = gtk_label_get_text(GTK_LABEL(label)); ! } ! ! ! return strdup(gWindowName); ! } ! else ! { ! return strdup(gtk_window_get_title(GTK_WINDOW(toplevel))); } }; void osSetWindowTitle(WindowHandle window, char *title) { ! GtkWidget *toplevel = gtk_widget_get_toplevel(window); ! ! if (toplevel == gFrameWidget) { ! if (gDocumentInterface == 2) ! { ! GtkWidget *label; ! label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(gClientWidget),window); ! gtk_label_set_text(GTK_LABEL(label), title); ! gtk_notebook_set_menu_label_text(GTK_NOTEBOOK(gClientWidget),window,title); ! } ! else ! { ! gWindowName = strdup(title); ! updateFrameTitle(); ! } } else { ! gtk_window_set_title(GTK_WINDOW(toplevel), title); } }; *************** *** 391,398 **** void osGetWindowViewSize(WindowHandle window, int *res) { ! if (gDocumentInterface == 1) { ! res[0] = gFrameWidget->allocation.width-4; ! res[1] = gFrameWidget->allocation.height-4; } else --- 440,449 ---- void osGetWindowViewSize(WindowHandle window, int *res) { ! GtkWidget *toplevel = gtk_widget_get_toplevel(window); ! ! if (toplevel != gFrameWidget || gDocumentInterface == 1) { ! res[0] = toplevel->allocation.width-4; ! res[1] = toplevel->allocation.height-4; } else *************** *** 405,410 **** void osSetWindowViewSize(WindowHandle window, int w, int h) { ! if (gDocumentInterface == 1) ! gtk_window_resize(GTK_WINDOW(gFrameWidget), w+4, h+4); } --- 456,462 ---- void osSetWindowViewSize(WindowHandle window, int w, int h) { ! GtkWidget *toplevel = gtk_widget_get_toplevel(window); ! if (toplevel != gFrameWidget || gDocumentInterface == 1) ! gtk_window_resize(GTK_WINDOW(toplevel), w+4, h+4); } *************** *** 453,461 **** void osShowWindow(WindowHandle window) { gtk_widget_show(window); }; ! void osRunWindow(WindowHandle window) { } --- 505,522 ---- void osShowWindow(WindowHandle window) { + GtkWidget *toplevel = gtk_widget_get_toplevel(window); gtk_widget_show(window); + gtk_widget_show(toplevel); }; ! void osRunDialog(WindowHandle window) { + GtkWidget *toplevel = gtk_widget_get_toplevel(window); + gtk_window_set_modal(GTK_WINDOW(toplevel), TRUE); + gtk_signal_connect (GTK_OBJECT(toplevel), "delete-event", + GTK_SIGNAL_FUNC(gtk_main_quit), + NULL); + + gtk_main(); } *************** *** 464,471 **** --- 525,534 ---- GtkWidget *widget = window; + printf("1 %p\n", window); gtk_signal_connect (GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &widget); handleWindowDismiss(widget); + printf("2\n"); return (widget == NULL); } *************** *** 476,487 **** } ! void osSetWindowEnabled(WindowHandle ctrl, BOOL enabled) { ! gtk_widget_set_sensitive(ctrl,enabled); } ! BOOL osGetWindowEnabled(WindowHandle ctrl) { ! return GTK_WIDGET_SENSITIVE(ctrl); } --- 539,550 ---- } ! void osSetWindowEnabled(WindowHandle window, BOOL enabled) { ! gtk_widget_set_sensitive(window,enabled); } ! BOOL osGetWindowEnabled(WindowHandle window) { ! return GTK_WIDGET_SENSITIVE(window); } *************** *** 589,596 **** void osSetWindowRect(WindowHandle window, int x0, int y0, int x1, int y1) { ! if (gDocumentInterface != 2) { ! gtk_window_move(GTK_WINDOW(gFrameWidget), x0, y0); ! gtk_window_resize(GTK_WINDOW(gFrameWidget), abs(x1 - x0), abs(y1 - y0)); } } --- 652,661 ---- void osSetWindowRect(WindowHandle window, int x0, int y0, int x1, int y1) { ! GtkWidget *toplevel = gtk_widget_get_toplevel(window); ! ! if (toplevel != gFrameWidget || gDocumentInterface == 1) { ! gtk_window_move(GTK_WINDOW(toplevel), x0, y0); ! gtk_window_resize(GTK_WINDOW(toplevel), abs(x1 - x0), abs(y1 - y0)); } } *************** *** 598,602 **** void osGetWindowRect(WindowHandle window, int *res) { ! if (gDocumentInterface == 2) { res[0] = 0; --- 663,669 ---- void osGetWindowRect(WindowHandle window, int *res) { ! GtkWidget *toplevel = gtk_widget_get_toplevel(window); ! ! if (toplevel == gFrameWidget && gDocumentInterface == 2) { res[0] = 0; *************** *** 612,617 **** int h = 0; ! gtk_window_get_position(GTK_WINDOW(gFrameWidget), &x, &y); ! gtk_window_get_size(GTK_WINDOW(gFrameWidget), &w, &h); res[0] = x; --- 679,684 ---- int h = 0; ! gtk_window_get_position(GTK_WINDOW(toplevel), &x, &y); ! gtk_window_get_size(GTK_WINDOW(toplevel), &w, &h); res[0] = x; *************** *** 622,630 **** } ! void osSetWindowResizeable(WindowHandle window, int resizeable ) { ! if (gDocumentInterface != 2 || GTK_IS_DIALOG(window)) { ! gtk_window_set_resizable(GTK_WINDOW(gtk_widget_get_toplevel(window)), resizeable != 0); } } --- 689,699 ---- } ! void osSetWindowResizeable(WindowHandle window, int resizeable) { ! GtkWidget *toplevel = gtk_widget_get_toplevel(window); ! ! if (toplevel != gFrameWidget || gDocumentInterface == 1) { ! gtk_window_set_resizable(GTK_WINDOW(toplevel), resizeable != 0); } } |