Seite 1 von 2

Canvas bei Linux in einer VM

Verfasst: 17.09.2012 16:31
von Lord
Hallo!

Frage an die Linuxnutzer:

Wie verhält sich bei euch folgender Code:

Code: Alles auswählen

OpenWindow(0, 10, 10, 400, 400, "Canvas-Test")
CanvasGadget(0, 5, 5, 390, 390)

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      Select EventType()
        Case #PB_EventType_LeftClick
          SetGadgetAttribute(0, #PB_Canvas_Clip, #True)
          SetWindowTitle(0, "Canvas-Test - LMB")
        Case #PB_EventType_RightClick
          SetGadgetAttribute(0, #PB_Canvas_Clip, #False)
           SetWindowTitle(0, "Canvas-Test - RMB")
     EndSelect
  EndSelect
ForEver
Ich habe Ubuntu 12.04 in VMWare laufen.
Bei obigem Code kann der Mauszeiger nach Drücken der
linken Maustaste das CanvasGadget verlassen.
Lasse ich das Programm auf Windows laufen, kann die
Maus das Gadget nicht verlassen.

Ist das jetzt die VM oder verhält sich das CanvasGadget
in Linux anders als in Windows?

Re: Canvas bei Linux in einer VM

Verfasst: 17.09.2012 18:31
von bobobo
verhält sich in einer virtualbox-emulation ubu12.04 (xfce) genauso "falsch"

Re: Canvas bei Linux in einer VM

Verfasst: 17.09.2012 18:39
von Lord
Hallo bobobo
bobobo hat geschrieben:verhält sich in einer virtualbox-emulation ubu12.04 (xfce) genauso "falsch"
Daß sich das CanvasGadget in einer VM "falsch"
verhält weiß ich ja. Ich will nur wissen, ob es
sich nativ unter Linux (im Gegensatz zu Windows)
eventuell auch "falsch" verhält, ob also die VM
Schuld ist oder nicht.

Re: Canvas bei Linux in einer VM

Verfasst: 17.09.2012 19:30
von ts-soft
Die VM hat da keine Schuld, warum sollte sie auch?
Bei 3D o. ä. mit Hardwarebeschleunigung könnte es evtl. Abweichungen geben, aber
bei solchen Dingen eher nicht :wink:

Re: Canvas bei Linux in einer VM

Verfasst: 17.09.2012 19:52
von bobobo
ff geht aber (Mauszeigerintegration ist dabei natürlich aus)
Linux ist wohl etwas kritischer in der Eventbehandlung

Code: Alles auswählen

OpenWindow(0,10,10,400,400,"Canvas-Gadget")
CanvasGadget(0,50,50,250,250,#PB_Canvas_ClipMouse)
SetGadgetAttribute(0,#PB_Canvas_Clip,#True)
Repeat
  event=WaitWindowEvent()
  etype=EventType()
  gadget=EventGadget()
  Select event
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      Select gadget
        Case 0
          Select etype
            Case #PB_EventType_LeftClick
              c=1
              SetWindowTitle(0,"LMB -clipping on")
            Case #PB_EventType_RightClick
              SetWindowTitle(0,"RMB -clipping off")
              SetGadgetAttribute(0,#PB_Canvas_Clip,#False) ; kann unter Linux merkwürdigerweise auch wegbleiben
              c=0
          EndSelect
      EndSelect
  EndSelect
  
  If GetGadgetAttribute(0,#PB_Canvas_Clip)=#False And c=1
    SetGadgetAttribute(0,#PB_Canvas_Clip,#True)
  EndIf
 
ForEver

Re: Canvas bei Linux in einer VM

Verfasst: 17.09.2012 19:59
von ts-soft
Der Code von Bobobo funktioniert zwar, aber ich würde keinen Code außerhalb der Ereignisse setzen. IMHO besser wäre es so:

Code: Alles auswählen

OpenWindow(0,10,10,400,400,"Canvas-Gadget")
CanvasGadget(0,50,50,250,250,#PB_Canvas_ClipMouse)
SetGadgetAttribute(0,#PB_Canvas_Clip,#True)
Repeat
  event=WaitWindowEvent()
  etype=EventType()
  gadget=EventGadget()
  Select event
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      Select gadget
        Case 0
          Select etype
            Case #PB_EventType_LeftClick
              c=1
              SetWindowTitle(0,"LMB -clipping on")
            Case #PB_EventType_RightClick
              SetWindowTitle(0,"RMB -clipping off")
              SetGadgetAttribute(0,#PB_Canvas_Clip,#False)
              c=0
          EndSelect
          If GetGadgetAttribute(0,#PB_Canvas_Clip)=#False And c=1
            SetGadgetAttribute(0,#PB_Canvas_Clip,#True)
          EndIf
      EndSelect
  EndSelect
ForEver

Re: Canvas bei Linux in einer VM

Verfasst: 17.09.2012 20:05
von Lord
Hallo bobobo und ts-soft!

Bei beiden Codes findet in Linux (VM) kein clipping statt!
In Windows funktioniert es.

bobobo, was meinst Du mit: "(Mauszeigerintegration ist
dabei natürlich aus)"?

Re: Canvas bei Linux in einer VM

Verfasst: 17.09.2012 20:28
von ts-soft
Lord hat geschrieben:bobobo, was meinst Du mit: "(Mauszeigerintegration ist
dabei natürlich aus)"?
Ich bin zwar nicht bobobo, aber die Mauszeigerintegration kann mit Strg+I ausgeschaltet werden. Desweiteren im Menüpunkt Maschine oder in den Einstellungen zur VM!

Mit aktivierter Mauszeigerintegration funktioniert der Code auch nicht mit einer virtuellen
Windows Maschine :wink:

Re: Canvas bei Linux in einer VM

Verfasst: 18.09.2012 00:15
von NicTheQuick
Also hier unter Linux Mint 13 und Mate funktioniert das Clipping.
Im ersten Code von "Lord" kann ich das CanvasGadget nicht verlassen, solange ich die linke Maustaste drücke. Lasse ich sie los, kann ich es wieder verlassen.
In dem Code von ts-soft kann ich nach Klicken der linken Maustaste das CanvasGadget nicht verlassen, auch nachdem ich die Taste los gelassen habe nicht. Dann muss ich erst wieder die rechte Maustaste drücken um das CanvasGadget verlassen zu können.

Re: Canvas bei Linux in einer VM

Verfasst: 18.09.2012 00:51
von ts-soft
NicTheQuick hat geschrieben:In dem Code von ts-soft kann ich nach Klicken der linken Maustaste das CanvasGadget nicht verlassen, auch nachdem ich die Taste los gelassen habe nicht. Dann muss ich erst wieder die rechte Maustaste drücken um das CanvasGadget verlassen zu können.
Und genau so sollte es sein, so ist es unter Windows bereits im erstem Code.
PS: Der Code ist von bobobo, hab nur eine kleine Anpassung vorgenommen.