Gtkmm Window Dock



  • Hallo,

    ich versuche gerade mich in gtkmm einzuarbeiten und haette dazu 2 Fragen:

    Die erst Frage waere, wie ich es hinbekomme das, dass Hauptfenster der Applikation
    am Rand des Desktops andockt?

    Die Zweite ist ob es eine Funktion gibt mit der ich die Groesse des Desktops ohne Panels zurueckbekomme?

    Hab schon gegoogelt aber nirgends was gefunden, waer daher fuer antworten dankbar.

    Mfg BB



  • Hallo,

    Codechecker schrieb:

    Die erst Frage waere, wie ich es hinbekomme das, dass Hauptfenster der Applikation
    am Rand des Desktops andockt?

    wo genau? Am linken, rechten, oberen oder unteren Rand? An allen gleichzeitig?

    Die Zweite ist ob es eine Funktion gibt mit der ich die Groesse des Desktops ohne Panels zurueckbekomme?

    In Pixel? Das wäre nämlich die Auflösung.

    MfG

    GPC



  • hallo gpc,

    ich will das die Dock Funktion auf allen Seiten geht.

    hmm bei der zweiten Frage hab ich mich wohl undeutlich ausgedrueckt:

    Nehm ich einfach die Auflösung des Bildschirms, und lasse ein Fenster bei Position x=0, y=0 anzeigen, so verdeckt dieses Fenster das Panel (wenn das Panel am oberen Rand ist), welches z.B. 24px der Aufloesung beansprucht. Eben das will ich nicht, deshalb die Groesse des Desktops ohne Panel. Da das Panel ja in der Groesse variieren kann, kann ich nicht einfach einen fixen Wert angeben. Deshalb Frage ich mich ob es nicht eine Funktion gibt die Koordinaten liefert die die Panel beruecksichtigen.

    so long
    Cc



  • Codechecker schrieb:

    ich will das die Dock Funktion auf allen Seiten geht.

    Okay, dann gehst du das folgendermaßen an:

    Wenn du willst, dass das Gtk::Window bei einem gewissen Abstand vom Bildschirmrand automatisch andockt, leitest du von Gtk::Window ab und überschreibst die Gtk::Window::on_frame_handler Funktion. Weitere Infos zu GdkEvents findest du in der gdk-Doku: http://developer.gnome.org/doc/API/2.0/gdk/index.html

    Willst du "auf Knopfdruck" andocken, also per Klick auf 'nen Button, kannst dir das sparen, dann soll der Event-Handler vom Button das folgende Prozedere machen.

    Wenn du nahe genug an einer "Bildschirmseite" dran bist (mit Gtk::Window::get_position prüfen), dann kannst du mit Gtk::Window::move das Fenster an den Rand schieben. Dann hast du angedockt.

    Wenn du an den unteren und rechten Rand willst, musst du allerdings die Größe des Gtk::Window berücksichtigen (mit Gtk::Window::get_size).

    Nehm ich einfach die Auflösung des Bildschirms, und lasse ein Fenster bei Position x=0, y=0 anzeigen, so verdeckt dieses Fenster das Panel (wenn das Panel am oberen Rand ist), welches z.B. 24px der Aufloesung beansprucht. Eben das will ich nicht, deshalb die Groesse des Desktops ohne Panel. Da das Panel ja in der Groesse variieren kann, kann ich nicht einfach einen fixen Wert angeben. Deshalb Frage ich mich ob es nicht eine Funktion gibt die Koordinaten liefert die die Panel beruecksichtigen.

    Also willst du im Prinzip nur das Gtk::Window maximieren? Macht man mit Gtk::Window::maximize.

    Oder hab ich's schon wieder falsch verstanden?

    MfG

    GPC



  • hi GPC,

    danke fuer die antworten, ok das erste werd ich erst ma so versuchen, obwohl ich denke das es dafuer sowas geben sollte .. hmm naja egal.

    Bei Der Berechnung der Grosse, werd ich wohl ueber die gconf gehen muessen in dem ich nachschaue ob/wieviele Panels aktiv sind und diese dann bei der Positierungd der Fenster beruecksichtige. Etwas umstaendlich, darum wollt ich das verhindern.

    Naja danke fuer die antworten meld mich betimmt nochmal 😉

    Mfg

    Cc


Log in to reply