Mercurial > dwindows
comparison gtk/dw.c @ 518:7efc5f99c4cc
Implemented dw_window_show/hide/minimize/destroy/set_text for MDI children.
reparent needs to be implemented.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 16 Mar 2004 06:53:23 +0000 |
parents | 63e5812d64ba |
children | 2fe16658d18b |
comparison
equal
deleted
inserted
replaced
517:63e5812d64ba | 518:7efc5f99c4cc |
---|---|
593 GtkMdiChild *child; | 593 GtkMdiChild *child; |
594 | 594 |
595 g_return_if_fail (GTK_IS_MDI (mdi)); | 595 g_return_if_fail (GTK_IS_MDI (mdi)); |
596 child = get_child (mdi, widget); | 596 child = get_child (mdi, widget); |
597 g_return_if_fail (child); | 597 g_return_if_fail (child); |
598 g_return_if_fail (GTK_IS_WIDGET (child)); | |
599 gtk_mdi_remove_true (GTK_CONTAINER (mdi), child->widget); | 598 gtk_mdi_remove_true (GTK_CONTAINER (mdi), child->widget); |
600 } | 599 } |
601 | 600 |
602 static void gtk_mdi_realize(GtkWidget *widget) | 601 static void gtk_mdi_realize(GtkWidget *widget) |
603 { | 602 { |
2249 * handle: The window handle to minimize. | 2248 * handle: The window handle to minimize. |
2250 */ | 2249 */ |
2251 int dw_window_minimize(HWND handle) | 2250 int dw_window_minimize(HWND handle) |
2252 { | 2251 { |
2253 int _locked_by_me = FALSE; | 2252 int _locked_by_me = FALSE; |
2253 GtkWidget *mdi = NULL; | |
2254 | 2254 |
2255 if(!handle) | 2255 if(!handle) |
2256 return 0; | 2256 return 0; |
2257 | 2257 |
2258 DW_MUTEX_LOCK; | 2258 DW_MUTEX_LOCK; |
2259 XIconifyWindow(GDK_WINDOW_XDISPLAY(GTK_WIDGET(handle)->window), | 2259 #if GTK_MAJOR_VERSION > 1 |
2260 GDK_WINDOW_XWINDOW(GTK_WIDGET(handle)->window), | 2260 if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) |
2261 DefaultScreen (GDK_DISPLAY ())); | 2261 { |
2262 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_ICONIFIED); | |
2263 } | |
2264 else | |
2265 #endif | |
2266 { | |
2267 XIconifyWindow(GDK_WINDOW_XDISPLAY(GTK_WIDGET(handle)->window), | |
2268 GDK_WINDOW_XWINDOW(GTK_WIDGET(handle)->window), | |
2269 DefaultScreen (GDK_DISPLAY ())); | |
2270 } | |
2262 DW_MUTEX_UNLOCK; | 2271 DW_MUTEX_UNLOCK; |
2263 return 0; | 2272 return 0; |
2264 } | 2273 } |
2265 | 2274 |
2266 /* | 2275 /* |
2305 * handle: The window handle to make visible. | 2314 * handle: The window handle to make visible. |
2306 */ | 2315 */ |
2307 int dw_window_show(HWND handle) | 2316 int dw_window_show(HWND handle) |
2308 { | 2317 { |
2309 int _locked_by_me = FALSE; | 2318 int _locked_by_me = FALSE; |
2310 GtkWidget *defaultitem; | 2319 GtkWidget *defaultitem, *mdi; |
2311 | 2320 |
2312 if(!handle) | 2321 if(!handle) |
2313 return 0; | 2322 return 0; |
2314 | 2323 |
2315 DW_MUTEX_LOCK; | 2324 DW_MUTEX_LOCK; |
2316 gtk_widget_show(handle); | 2325 gtk_widget_show(handle); |
2317 if(GTK_WIDGET(handle)->window) | 2326 #if GTK_MAJOR_VERSION > 1 |
2318 { | 2327 if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) |
2319 int width = (int)gtk_object_get_data(GTK_OBJECT(handle), "_dw_width"); | 2328 { |
2320 int height = (int)gtk_object_get_data(GTK_OBJECT(handle), "_dw_height"); | 2329 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_NORMAL); |
2321 | 2330 } |
2322 if(width && height) | 2331 else |
2323 { | 2332 #endif |
2324 gtk_widget_set_usize(handle, width, height); | 2333 { |
2325 gtk_object_set_data(GTK_OBJECT(handle), "_dw_width", 0); | 2334 if(GTK_WIDGET(handle)->window) |
2326 gtk_object_set_data(GTK_OBJECT(handle), "_dw_height", 0); | 2335 { |
2327 } | 2336 int width = (int)gtk_object_get_data(GTK_OBJECT(handle), "_dw_width"); |
2328 | 2337 int height = (int)gtk_object_get_data(GTK_OBJECT(handle), "_dw_height"); |
2329 gdk_window_raise(GTK_WIDGET(handle)->window); | 2338 |
2330 gdk_flush(); | 2339 if(width && height) |
2331 gdk_window_show(GTK_WIDGET(handle)->window); | 2340 { |
2332 gdk_flush(); | 2341 gtk_widget_set_usize(handle, width, height); |
2333 } | 2342 gtk_object_set_data(GTK_OBJECT(handle), "_dw_width", 0); |
2334 defaultitem = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_defaultitem"); | 2343 gtk_object_set_data(GTK_OBJECT(handle), "_dw_height", 0); |
2335 if(defaultitem) | 2344 } |
2336 gtk_widget_grab_focus(defaultitem); | 2345 |
2346 gdk_window_raise(GTK_WIDGET(handle)->window); | |
2347 gdk_flush(); | |
2348 gdk_window_show(GTK_WIDGET(handle)->window); | |
2349 gdk_flush(); | |
2350 } | |
2351 defaultitem = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_defaultitem"); | |
2352 if(defaultitem) | |
2353 gtk_widget_grab_focus(defaultitem); | |
2354 } | |
2337 DW_MUTEX_UNLOCK; | 2355 DW_MUTEX_UNLOCK; |
2338 return 0; | 2356 return 0; |
2339 } | 2357 } |
2340 | 2358 |
2341 /* | 2359 /* |
2344 * handle: The window handle to make visible. | 2362 * handle: The window handle to make visible. |
2345 */ | 2363 */ |
2346 int dw_window_hide(HWND handle) | 2364 int dw_window_hide(HWND handle) |
2347 { | 2365 { |
2348 int _locked_by_me = FALSE; | 2366 int _locked_by_me = FALSE; |
2367 GtkWidget *mdi = NULL; | |
2349 | 2368 |
2350 if(!handle) | 2369 if(!handle) |
2351 return 0; | 2370 return 0; |
2352 | 2371 |
2353 DW_MUTEX_LOCK; | 2372 DW_MUTEX_LOCK; |
2354 gtk_widget_hide(handle); | 2373 #if GTK_MAJOR_VERSION > 1 |
2374 if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) | |
2375 { | |
2376 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_ICONIFIED); | |
2377 } | |
2378 else | |
2379 #endif | |
2380 gtk_widget_hide(handle); | |
2355 DW_MUTEX_UNLOCK; | 2381 DW_MUTEX_UNLOCK; |
2356 return 0; | 2382 return 0; |
2357 } | 2383 } |
2358 | 2384 |
2359 /* | 2385 /* |
2362 * handle: The window handle to destroy. | 2388 * handle: The window handle to destroy. |
2363 */ | 2389 */ |
2364 int dw_window_destroy(HWND handle) | 2390 int dw_window_destroy(HWND handle) |
2365 { | 2391 { |
2366 int _locked_by_me = FALSE; | 2392 int _locked_by_me = FALSE; |
2393 GtkWidget *mdi = NULL; | |
2367 | 2394 |
2368 if(!handle) | 2395 if(!handle) |
2369 return 0; | 2396 return 0; |
2370 | 2397 |
2371 DW_MUTEX_LOCK; | 2398 DW_MUTEX_LOCK; |
2399 #if GTK_MAJOR_VERSION > 1 | |
2400 if((mdi = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi)) | |
2401 { | |
2402 gtk_mdi_remove(GTK_MDI(mdi), handle); | |
2403 } | |
2404 #endif | |
2372 if(GTK_IS_WIDGET(handle)) | 2405 if(GTK_IS_WIDGET(handle)) |
2373 { | 2406 { |
2374 GtkWidget *eventbox = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_eventbox"); | 2407 GtkWidget *eventbox = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_eventbox"); |
2375 | 2408 |
2376 if(eventbox && GTK_IS_WIDGET(eventbox)) | 2409 if(eventbox && GTK_IS_WIDGET(eventbox)) |
2377 gtk_widget_destroy(eventbox); | 2410 gtk_widget_destroy(eventbox); |
2378 else | 2411 else |
2379 gtk_widget_destroy(handle); | 2412 gtk_widget_destroy(handle); |
2380 } | 2413 } |
2381 DW_MUTEX_UNLOCK; | 2414 DW_MUTEX_UNLOCK; |
2382 return 0; | 2415 return 0; |
2383 } | 2416 } |
2737 | 2770 |
2738 label = gtk_label_new(title); | 2771 label = gtk_label_new(title); |
2739 gtk_widget_show(label); | 2772 gtk_widget_show(label); |
2740 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_mdi_child", (gpointer)1); | 2773 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_mdi_child", (gpointer)1); |
2741 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_mdi_title", (gpointer)label); | 2774 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_mdi_title", (gpointer)label); |
2775 gtk_object_set_data(GTK_OBJECT(tmp), "_dw_mdi", (gpointer)hwndOwner); | |
2742 | 2776 |
2743 gtk_mdi_put(GTK_MDI(hwndOwner), tmp, 100, 75, label); | 2777 gtk_mdi_put(GTK_MDI(hwndOwner), tmp, 100, 75, label); |
2744 } | 2778 } |
2745 else | 2779 else |
2746 #endif | 2780 #endif |
3842 * text: The text associsated with a given window. f | 3876 * text: The text associsated with a given window. f |
3843 */ | 3877 */ |
3844 void dw_window_set_text(HWND handle, char *text) | 3878 void dw_window_set_text(HWND handle, char *text) |
3845 { | 3879 { |
3846 int _locked_by_me = FALSE; | 3880 int _locked_by_me = FALSE; |
3847 | 3881 GtkWidget *tmp; |
3848 DW_MUTEX_LOCK; | 3882 |
3883 DW_MUTEX_LOCK; | |
3884 if((tmp = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_mdi_title"))) | |
3885 handle = tmp; | |
3849 if(GTK_IS_ENTRY(handle)) | 3886 if(GTK_IS_ENTRY(handle)) |
3850 gtk_entry_set_text(GTK_ENTRY(handle), text); | 3887 gtk_entry_set_text(GTK_ENTRY(handle), text); |
3851 else if(GTK_IS_COMBO(handle)) | 3888 else if(GTK_IS_COMBO(handle)) |
3852 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(handle)->entry), text); | 3889 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(handle)->entry), text); |
3853 else if(GTK_IS_LABEL(handle)) | 3890 else if(GTK_IS_LABEL(handle)) |