In the    POPUP MENU    and  COMBOBOX ........... has these effects
.......................

If you activate a combo-box  or  menu ..........and then   you clicked
the button  maximize or minimize of the  window  ........ ...

this always happens


1). First   .Clicking the maximize or minimize button  of  the window  ...
. The  COMBO-BOX    is disabled ........... and  her     menu option .


2)Second . Then recently .  I can close the window.



this always happens




//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 View   Example



///////////////////////////////////////////////////////////////////////////////////////////////////////////





/*******THE CODE********/
#include <gtk/gtk.h>




int main(int argc,
       char *argv[]) {



   GtkWidget *window;

   GtkWidget *combo;
   GtkWidget *widget;
   GtkWidget *vbox;
   GtkWidget *hbox;

   gtk_init(&argc, &argv);

   window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title(GTK_WINDOW(window), "BibMk");
   gtk_container_set_border_width(GTK_CONTAINER(window), 20);


   g_signal_connect(window, "delete-event",
           G_CALLBACK(gtk_main_quit), NULL);



   vbox = gtk_vbox_new(FALSE, 0);
   hbox = gtk_vbox_new(FALSE, 0);


   gtk_container_add(GTK_CONTAINER(window), hbox);


   gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);





   combo = gtk_combo_box_text_new ();


   gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT(combo), NULL, "  Loco  ");



   gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT(combo)    , "  Book
 ");


   gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT(combo)    , "
 Ladron  ");


   gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT(combo)    , "
 Anibal Bigoton  ");


   gtk_widget_show(combo);





   gtk_box_pack_start(GTK_BOX(hbox), combo, TRUE, TRUE, 0);



   gtk_widget_show_all(window);
   gtk_main();








   return 0;
}



/*******CODE END**********/






//////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////



I am creating a combo-box with scrollbar with GTK 3.0 and VALA (gtk)
......... .as  the  COMBO-BOX  in   LibreOffice that have  in the   list of
FONTS.




I wrote an in GTK 3.0 widgets.

If .  I  active   a    POPUP WINDOW   (POPUP WINDOW=MENU ) with a
TOGGLEBUTTON... when you clicked the button to close the window.

1). First   . The  TOGGLEBUTTON is   off    .  the  POPUP WINDOW   is
hidden .
2) Then recently .  I can close the window.
To here   all works fine.


But I can not do the same with the buttons on the maximize and minimize
WINDOW ...... I must achieve the same effect as the widgets  ,   POPUP MENU
 and   COMBO-BOX  ,   with  these events .


If I  you   can help , I'll be grateful  .

When  , you  have a  time. you can constestarme.

Best   regards   . Mariano.



this is    the code I've written in GTK 3.0.



/////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////





#include <gtk/gtk.h>


enum
{
   LIST_ITEM = 0,
   N_COLUMNS
};




static void  init_list(GtkWidget *list)

{

   GtkCellRenderer *renderer;
   GtkTreeViewColumn *column;
   GtkListStore *store;

   renderer = gtk_cell_renderer_text_new();
   column = gtk_tree_view_column_new_with_attributes("List Items",
          renderer, "text", LIST_ITEM, NULL);
   gtk_tree_view_append_column(GTK_TREE_VIEW(list), column);

   store = gtk_list_store_new(N_COLUMNS, G_TYPE_STRING);

   gtk_tree_view_set_model(GTK_TREE_VIEW(list),
       GTK_TREE_MODEL(store));

   g_object_unref(store);

}




static void  add_to_list(GtkWidget *list, const gchar *str)

{
   GtkListStore *store;
   GtkTreeIter iter;

   store = GTK_LIST_STORE(gtk_tree_view_get_model
       (GTK_TREE_VIEW(list)));

   gtk_list_store_append(store, &iter);
   gtk_list_store_set(store, &iter, LIST_ITEM, str, -1);
}





////////////////////////////////////////////////////////////////////////////////

static void text( GtkWidget *widget , GdkEventButton *event, gpointer
buttonf)
{

   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(buttonf),FALSE);


}





static void clicked1(GtkWindow *window, GdkEventButton *event, gpointer
buttonf)
{

   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(buttonf),FALSE);


}



static void loc1(GtkWindow *window, GdkEventButton *event, gpointer buttonf)

{


   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(buttonf),FALSE);


}




static void ponja2(GtkWindow *window, GdkEventButton *event, gpointer
buttonf)

{

    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(buttonf),FALSE);

}


/////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////



void activado(GtkWidget *widget, gpointer window3)
{

  if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))

{


      gtk_widget_hide(window3);
      gtk_widget_show_all(window3);

 }

    else {

      gtk_window_iconify (GTK_WINDOW (window3) );
      gtk_widget_hide(window3);

  }


}




///////////////////////////////////////////////////////////////////////




void ventana_p(GtkWindow *window, GdkEvent *event, gpointer window3 )

{

   int x, y;
   char buf[10];
   x = event->configure.x;
   y = event->configure.y;
   sprintf(buf, "%d, %d", x, y);
   gtk_window_set_title(window3, buf);
   gtk_window_move ( GTK_WINDOW(window3), x+30, y+35 );



}

//////////////////////////////////////////////////////////////////////////


int main(int argc, char *argv[])

    {

    GtkWidget *window;
    GtkWidget *vbox1 ;
    GtkWidget *vbox2;
    GtkWidget *vbox3;
    GtkWidget *fixed;
    GtkWidget *buttonf;
    GtkWidget *label2;
    GtkWidget *arrow;


    GtkWidget *vboxtext;
    GtkWidget *viewarea;

    GtkWidget *textview;
    GtkTextBuffer *buffer;




    GtkWidget *window3;
    GtkWidget *vboxw;
    GtkWidget *vboxs;
    GtkWidget *scrolled_window ;


    GtkWidget *list;
    GtkTreeSelection *selection;
    GtkWidget *label;




    gtk_init(&argc, &argv);





////////////////////////////// Ventana Popup  / Window Popup
 ///////////////////////////////


    window3 = gtk_window_new(GTK_WINDOW_POPUP);






    gtk_window_set_title(GTK_WINDOW(window3), "enter signal");
    gtk_widget_hide(window3);




    vboxw = gtk_hbox_new(FALSE, 0);

    gtk_container_set_border_width (GTK_CONTAINER (vboxw), 3);
    gtk_container_add(GTK_CONTAINER(window3), vboxw);
    gtk_widget_show (vboxw);

    scrolled_window=gtk_scrolled_window_new(NULL, NULL);



    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
                                         GTK_POLICY_AUTOMATIC,
                 GTK_POLICY_AUTOMATIC);


    gtk_widget_set_size_request(scrolled_window,120, 300);



    gtk_box_pack_start(GTK_BOX(vboxw), scrolled_window , FALSE, FALSE, 0);

    gtk_widget_show(scrolled_window);







    vboxs = gtk_vbox_new(FALSE, 0);



    gtk_scrolled_window_add_with_viewport(
GTK_SCROLLED_WINDOW(scrolled_window),vboxs);



    list = gtk_tree_view_new();
    gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE);

    gtk_box_pack_start(GTK_BOX(vboxs), list, TRUE, TRUE, 0);



    init_list(list);
    add_to_list(list, "Ubuntu");
    add_to_list(list, "Mandriva");
    add_to_list(list, "Fedora");
    add_to_list(list, "Debian");
    add_to_list(list, "Linux MInt");
    add_to_list(list, "Tuquito");
    add_to_list(list, "Pupix");
    add_to_list(list, "Open Suse");
    add_to_list(list, "Kubuntu");
    add_to_list(list, "Xubuntu");

    add_to_list(list, "Trisquel");
    add_to_list(list, "Zorin");
    add_to_list(list, "Mageia");
    add_to_list(list, "Cent OS");
    add_to_list(list, "Pardus");
    add_to_list(list, "Sabayon");

    add_to_list(list, "Dragora");
    add_to_list(list, "Goblin");
    add_to_list(list, "Linex");
    add_to_list(list, "Pro-linux");
    add_to_list(list, "Red Hat");


////////////////////////////////////////////////////////////////////////
///////////////////////// Ventana  Principal  //////////////////////


     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
     gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
     gtk_window_set_title(GTK_WINDOW(window), "Simple");


     gtk_window_set_transient_for(GTK_WINDOW (window3),GTK_WINDOW (window));




     gtk_widget_add_events(GTK_WIDGET(window), GDK_BUTTON_PRESS_MASK );

     gtk_widget_add_events(GTK_WIDGET(window),GDK_CONFIGURE );

     gtk_widget_add_events(GTK_WIDGET(window),GDK_FOCUS_CHANGE_MASK );



     gtk_widget_grab_focus (window);




     vbox1 =gtk_vbox_new(FALSE, 0);
     gtk_widget_show_all(vbox1);
     gtk_container_add(GTK_CONTAINER(window), vbox1);




     vbox2 = gtk_vbox_new(FALSE, 0);
     gtk_box_pack_start(GTK_BOX(vbox1), vbox2  , FALSE, FALSE, 0);


     fixed = gtk_fixed_new();

     gtk_container_add(GTK_CONTAINER(vbox2), fixed);





     buttonf = gtk_toggle_button_new();




     gtk_widget_set_size_request(buttonf, 128, 35);

     gtk_fixed_put(GTK_FIXED(fixed), buttonf, 29, 0);


     vbox3 =gtk_hbox_new(FALSE, 0);
     label2 = gtk_label_new("Buttonf");
     gtk_box_pack_start(GTK_BOX(vbox3),label2,TRUE,TRUE,2);

     gtk_container_add(GTK_CONTAINER(buttonf), vbox3);



     gtk_widget_show(label2);

     arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_IN );

     gtk_box_pack_start(GTK_BOX(vbox3),arrow,FALSE,FALSE,2);

//////////////////////////////  TEXTO
///////////////////////////////////////////////

    vboxtext = gtk_vbox_new(FALSE, 0);


    gtk_container_add(GTK_CONTAINER(vbox1), vboxtext);

    gtk_widget_set_size_request(vboxtext, 300, 300);

    viewarea=gtk_scrolled_window_new(NULL,NULL);
    gtk_box_pack_start(GTK_BOX(vboxtext),viewarea,TRUE,TRUE,0);
    gtk_widget_show(viewarea);


    gtk_widget_add_events(GTK_WIDGET(textview), GDK_BUTTON_PRESS_MASK );



    textview = gtk_text_view_new();


    gtk_container_set_border_width(GTK_CONTAINER(   textview), 0);


    gtk_container_add(GTK_CONTAINER(viewarea),   textview);

    gtk_container_set_border_width(GTK_CONTAINER(viewarea), 2);



    gtk_widget_grab_focus(   textview);


    buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW( textview));



//////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// llamada  de   ventana
////////////////////////////////

    g_signal_connect_swapped(window, "destroy",G_CALLBACK(gtk_main_quit),
window);


////////////////////////  toggle  button llamadas /////////////////////


    g_signal_connect(G_OBJECT(window), "configure-event",
G_CALLBACK(ventana_p),window3);



    g_signal_connect(buttonf, "toggled",  G_CALLBACK(activado),  window3);



    g_signal_connect(G_OBJECT(window), "button-press-event",
G_CALLBACK(ponja2), buttonf);



    g_signal_connect(G_OBJECT(window), "focus-out-event", G_CALLBACK(loc1),
buttonf );



    g_signal_connect (window, "delete_event", G_CALLBACK (clicked1),
buttonf);




    g_signal_connect(G_OBJECT(textview), "button-press-event",
G_CALLBACK(text), buttonf);



    gtk_widget_show_all(window);


    gtk_main();



    return 0;



}


































2012/6/22 Tadej Borovšak <tadeb...@gmail.com>

> Hello.
>
> > Hello ........How I can make the buttons   are inactive  ,  the buttons
>  of
> > the window  (Buttons : maximize , minimize , close )  or without focus
> when
> > the pointer  is    over  them     ? ................
> >
> > I need to get the effect .   Caso 2 . View image
> >
> >
> > http://fotos.subefotos.com/607c3fb8e19de4ed18357b85a33b3ab5o.png
>
> This is not something you could do with GTK+, since window decorations
> are usually handled by window manager. What window manager (desktop) are
> you using? Maybe it can be themed to behave this way?
>
> Cheers,
> Tadej
>
>
> --
> Tadej Borovšak
> tadej.borov...@gmail.com
> tadeb...@gmail.com
> tadeboro.blogspot.com
>
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to