|
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);
}
}
|