Changeset 1647
Legend:
- Unmodified
- Added
- Removed
-
trunk/gtk/dialogs.c
r1633 r1647 90 90 stylekludge( GObject * obj, GParamSpec * spec, gpointer data ); 91 91 static void 92 setscroll( void * arg ); 93 static void 94 fileswindresp( GtkWidget * widget, gint resp, gpointer data ); 92 fileswinddead( GtkWidget * widget, gpointer data ); 95 93 static void 96 94 filestorclosed( gpointer data, GObject * tor ); … … 428 426 int ii; 429 427 GtkWidget * view, * scroll, * frame, * wind; 430 GtkCellRenderer * rend ;428 GtkCellRenderer * rend, * elip; 431 429 GtkTreeViewColumn * col; 432 430 GtkTreeSelection * sel; … … 452 450 /* add file column */ 453 451 col = gtk_tree_view_column_new(); 452 gtk_tree_view_column_set_expand( col, TRUE ); 453 gtk_tree_view_column_set_sizing( col, GTK_TREE_VIEW_COLUMN_AUTOSIZE ); 454 454 gtk_tree_view_column_set_title( col, _("File") ); 455 455 /* add icon renderer */ … … 459 459 /* add text renderer */ 460 460 rend = gtk_cell_renderer_text_new(); 461 elip = rend; 461 462 gtk_tree_view_column_pack_start( col, rend, TRUE ); 462 463 gtk_tree_view_column_add_attribute( col, rend, "markup", FC_LABEL ); … … 484 485 /* create the scrolled window and stick the view in it */ 485 486 scroll = gtk_scrolled_window_new( NULL, NULL ); 486 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scroll ),487 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC );488 487 gtk_container_add( GTK_CONTAINER( scroll ), view ); 489 488 gtk_widget_show( scroll ); … … 517 516 518 517 g_object_weak_ref( G_OBJECT( tor ), filestorclosed, fw ); 519 g_signal_connect( wind, "response", G_CALLBACK( fileswindresp ), fw ); 518 g_signal_connect( wind, "destroy", G_CALLBACK( fileswinddead ), fw ); 519 g_signal_connect( wind, "response", G_CALLBACK( gtk_widget_destroy ), 0 ); 520 520 fileswindupdate( fw ); 521 521 522 /* show the window with a nice initial size */ 523 windowsizehack( wind, scroll, view, setscroll, scroll ); 522 sizingmagic( GTK_WINDOW( wind ), GTK_SCROLLED_WINDOW( scroll ), 523 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); 524 g_object_set( elip, "ellipsize", PANGO_ELLIPSIZE_END, NULL ); 525 gtk_widget_show( wind ); 524 526 } 525 527 … … 538 540 539 541 static void 540 setscroll( void * arg ) 541 { 542 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( arg ), 543 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); 544 } 545 546 static void 547 fileswindresp( GtkWidget * widget SHUTUP, gint resp SHUTUP, gpointer data ) 542 fileswinddead( GtkWidget * widget SHUTUP, gpointer data ) 548 543 { 549 544 struct fileswind * fw = data; -
trunk/gtk/main.c
r1615 r1647 424 424 updatemodel( cbdata ); 425 425 426 /* this shows the window */427 tr_window_size_hack( wind );428 429 426 /* set up the ipc socket now that we're ready to get torrents from it */ 430 427 ipc_socket_setup( GTK_WINDOW( wind ), addtorrents, wannaquit, cbdata ); 428 429 /* show the window */ 430 tr_window_show( wind ); 431 431 } 432 432 … … 470 470 win = tr_window_new(); 471 471 winsetup( cbdata, TR_WINDOW( win ) ); 472 473 /* this shows the window */ 474 tr_window_size_hack( TR_WINDOW( win ) ); 472 tr_window_show( TR_WINDOW( win ) ); 475 473 } 476 474 -
trunk/gtk/tr_window.c
r1587 r1647 40 40 { 41 41 PROP_MODEL = 1, 42 PROP_ELLIPSIZE,43 42 PROP_SELECTION, 44 43 PROP_DOUBLECLICK, … … 133 132 g_object_class_install_property( gobject_class, PROP_MODEL, pspec ); 134 133 135 pspec = g_param_spec_boolean( "ellipsize", _("Ellipsize"),136 _("Ellipsize torrent names."),137 FALSE, G_PARAM_READWRITE );138 g_object_class_install_property( gobject_class, PROP_ELLIPSIZE, pspec );139 140 134 pspec = g_param_spec_object( "selection", _("Selection"), 141 135 _("The GtkTreeSelection for the list view."), … … 200 194 FALSE, FALSE, 0 ); 201 195 202 gtk_scrolled_window_set_policy( self->scroll,203 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS );204 196 gtk_container_add( GTK_CONTAINER( scroll ), GTK_WIDGET( self->view ) ); 205 197 gtk_box_pack_start( GTK_BOX( vbox ), scroll, TRUE, TRUE, 0 ); … … 221 213 { 222 214 TrWindow * self = ( TrWindow * )object; 223 PangoEllipsizeMode elip;224 215 225 216 if( self->disposed ) … … 232 223 case PROP_MODEL: 233 224 gtk_tree_view_set_model( self->view, g_value_get_object( value ) ); 234 break;235 case PROP_ELLIPSIZE:236 g_assert( NULL != self->namerend );237 elip = ( g_value_get_boolean( value ) ?238 PANGO_ELLIPSIZE_END : PANGO_ELLIPSIZE_NONE );239 g_object_set( self->namerend, "ellipsize", elip, NULL );240 225 break; 241 226 case PROP_DOUBLECLICK: … … 253 238 { 254 239 TrWindow * self = ( TrWindow * )object; 255 PangoEllipsizeMode elip;256 240 257 241 if( self->disposed ) … … 264 248 case PROP_MODEL: 265 249 g_value_set_object( value, gtk_tree_view_get_model( self->view ) ); 266 break;267 case PROP_ELLIPSIZE:268 g_assert( NULL != self->namerend );269 g_object_get( self->namerend, "ellipsize", &elip, NULL);270 g_value_set_boolean( value, ( PANGO_ELLIPSIZE_NONE != elip ) );271 250 break; 272 251 case PROP_SELECTION: … … 386 365 } 387 366 388 static void389 setelip( void * arg )390 {391 g_object_set( arg, "ellipsize", TRUE, NULL );392 }393 394 367 void 395 tr_window_s ize_hack( TrWindow * self )368 tr_window_show( TrWindow * self ) 396 369 { 397 370 TR_IS_WINDOW( self ); 398 371 399 windowsizehack( GTK_WIDGET( self ), GTK_WIDGET( self->scroll ), 400 GTK_WIDGET( self->view ), setelip, self ); 372 sizingmagic( GTK_WINDOW( self ), self->scroll, 373 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS ); 374 g_object_set( self->namerend, "ellipsize", PANGO_ELLIPSIZE_END, NULL ); 375 gtk_widget_show( GTK_WIDGET( self ) ); 401 376 } 402 377 -
trunk/gtk/tr_window.h
r1515 r1647 85 85 tr_window_update( TrWindow * wind, float downspeed, float upspeed ); 86 86 87 /* some evil magic to show the window with a nice initial window size */ 88 /* note that the gtk main loop runs in this function */ 87 /* some magic to show the window with a nice initial size */ 89 88 void 90 tr_window_s ize_hack( TrWindow * wind );89 tr_window_show( TrWindow * wind ); 91 90 92 91 #endif -
trunk/gtk/util.c
r1605 r1647 318 318 319 319 void 320 windowsizehack( GtkWidget * wind, GtkWidget * scroll, GtkWidget * view,321 callbackfunc_t func, void * arg)320 sizingmagic( GtkWindow * wind, GtkScrolledWindow * scroll, 321 GtkPolicyType hscroll, GtkPolicyType vscroll ) 322 322 { 323 323 GtkRequisition req; 324 gint width, height;325 324 GdkScreen * screen; 326 327 gtk_widget_realize( wind ); 328 gtk_widget_size_request( view, &req ); 329 height = req.height; 330 gtk_widget_size_request( scroll, &req ); 331 height -= req.height; 332 gtk_widget_size_request( wind, &req ); 333 height += req.height; 334 screen = gtk_widget_get_screen( wind ); 335 width = MIN( req.width, gdk_screen_get_width( screen ) / 2 ); 336 height = MIN( height, gdk_screen_get_height( screen ) / 5 * 4 ); 337 if( height > req.width ) 338 { 339 height = MIN( height, width * 8 / 5 ); 340 } 341 else 342 { 343 height = MAX( height, width * 5 / 8 ); 344 } 345 if( height > req.width ) 346 { 347 height = MIN( height, width * 8 / 5 ); 348 } 349 else 350 { 351 height = MAX( height, width * 5 / 8 ); 352 } 353 if( NULL != func ) 354 { 355 func( arg ); 356 } 357 gtk_widget_show_now( wind ); 358 gtk_window_resize( GTK_WINDOW( wind ), width, height ); 359 gtk_window_set_focus( GTK_WINDOW( wind ), NULL ); 325 int width, height; 326 327 screen = gtk_widget_get_screen( GTK_WIDGET( wind ) ); 328 329 gtk_scrolled_window_set_policy( scroll, GTK_POLICY_NEVER, 330 GTK_POLICY_NEVER ); 331 332 gtk_widget_size_request( GTK_WIDGET( wind ), &req ); 333 height = MIN( req.height, gdk_screen_get_height( screen ) / 5 * 4 ); 334 335 gtk_scrolled_window_set_policy( scroll, GTK_POLICY_NEVER, vscroll ); 336 337 gtk_widget_size_request( GTK_WIDGET( wind ), &req ); 338 width = MIN( req.width, gdk_screen_get_width( screen ) / 2 ); 339 340 gtk_window_set_default_size( wind, width, height ); 341 342 gtk_scrolled_window_set_policy( scroll, hscroll, vscroll ); 360 343 } 361 344 -
trunk/gtk/util.h
r1605 r1647 154 154 /* here there be dragons */ 155 155 void 156 windowsizehack( GtkWidget * wind, GtkWidget * scroll, GtkWidget * view,157 callbackfunc_t func, void * arg);156 sizingmagic( GtkWindow * wind, GtkScrolledWindow * scroll, 157 GtkPolicyType hscroll, GtkPolicyType vscroll ); 158 158 159 159 /* create an error dialog, if wind is NULL or mapped then show dialog now,
Note: See TracChangeset
for help on using the changeset viewer.